web-dev-qa-db-fra.com

Premiers pas avec OpenCV 2.4 et MinGW sous Windows 7

Comment installer OpenCV 2.4 et compiler mon code avec MinGW?

34
flowfree

1. Installer OpenCV 2.4.3

Tout d'abord, obtenez OpenCV 2.4. sur sourceforge.net. C'est un auto-extraction de fichiers, il suffit donc de double-cliquer sur le fichier pour démarrer l'installation. Installez-le dans un répertoire, dites C:\.

OpenCV self-extracting

Attendez que tous les fichiers soient extraits. Il va créer un nouveau répertoire C:\opencv qui contient les fichiers d'en-tête OpenCV, les bibliothèques, les exemples de code, etc.

Vous devez maintenant ajouter C:\opencv\build\x86\mingw\bin répertoire de votre chemin système. Ce répertoire contient les DLL OpenCV nécessaires à l'exécution de votre code.

Ouvrir Panneau de configuration Système Paramètres système avancés Onglet Avancé Variables d'environnement ...

Vous verrez une fenêtre comme ci-dessous:

Add OpenCV DLL directory to system path

Dans la section Variables système,
sélectionnez Chemin (1), cliquez sur Modifier ... (2), ajoutez C:\opencv\build\x86\mingw\bin (3) puis cliquez sur Ok .

Ceci termine l'installation d'OpenCV 2.4.3 sur votre ordinateur.


2. Installation de la suite de compilateurs MinGW

Je vous recommande fortement d'utiliser gcc (GNU Compiler Collection) pour compiler votre code. gcc est la suite de compilateurs largement disponible dans les systèmes Linux et MinGW est le port natif pour Windows.

Téléchargez le programme d'installation de MinGW à partir de Sourceforge.net et double-cliquez pour démarrer l'installation. Suivez simplement l'assistant et sélectionnez le répertoire à installer, dites C:\MinGW.

Select directory in MinGW installation

Sélectionnez "C Compiler" et "C++ Compiler" à installer.

Select components to be installed

Le programme d'installation télécharge certains packages sur Internet, vous devez donc attendre un peu. Une fois l'installation terminée, ajoutez C:\MinGW\bin vers votre chemin système en suivant les étapes décrites précédemment.

Add MinGW bin directory to system path

Pour tester si votre installation MinGW est réussie, ouvrez une boîte de ligne de commande et tapez: gcc. Si tout va bien, il affichera ce message:

gcc: fatal error: no input files
compilation terminated

Ceci termine l'installation de MinGW, il est maintenant temps d'écrire votre "Hello, World!" programme.


3. Écrivez un exemple de code

Ouvrez votre éditeur de texte et tapez le code ci-dessous et enregistrez le fichier dans loadimg.cpp.

#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
  Mat im = imread(argc == 2 ? argv[1] : "lena.jpg", 1);
  if (im.empty())
  {
    cout << "Cannot open image!" << endl;
    return -1;
  }

  imshow("image", im);
  waitKey(0);

  return 0;
}

Mettez lena.jpg ou toute image que vous aimez dans le même répertoire avec le fichier ci-dessus. Ouvrez une boîte de ligne de commande et compilez le code ci-dessus en tapant:

g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg

S'il compile avec succès, il créera un exécutable nommé loadimg.exe.

Type:

loadimg

Pour exécuter le programme. Résultat:

The result of your first OpenCV program


4. Où aller d'ici?

Maintenant que votre environnement OpenCV est prêt, quelle est la prochaine étape?

  1. Allez dans le répertoire d'exemples → C:\opencv\samples\cpp.
  2. Lisez et compilez du code.
  3. Écrivez votre propre code.
61
flowfree

Les instructions de la réponse @bsdnoobz sont en effet utiles, mais n'ont pas permis à OpenCV de fonctionner sur mon système.

Apparemment, j'avais besoin de compiler la bibliothèque moi-même afin de la faire fonctionner, et de ne pas compter sur les binaires pré-construits (ce qui provoquait le plantage de mes programmes, probablement en raison d'une incompatibilité avec mon système).

Je l'ai fait fonctionner et j'ai écrit un guide complet pour compilation et installation d'OpenCV, et configuration de Netbeans pour fonctionner avec.

Pour être complet, il est également fourni ci-dessous.


Lorsque j'ai commencé à utiliser OpenCV, j'ai rencontré deux difficultés majeures:

  1. Faire en sorte que mes programmes ne se bloquent pas immédiatement.
  2. Faire jouer Netbeans à Nice, et surtout faire fonctionner le débogueur.

J'ai lu de nombreux tutoriels et articles "comment faire", mais aucun n'était vraiment complet et complet. Finalement, j'ai réussi à mettre en place l'environnement; et après un certain temps d'utilisation de cette (grande) bibliothèque, j'ai décidé d'écrire ce petit tutoriel, qui, espérons-le, aidera les autres.

Ce didacticiel comprend trois parties:

  1. Compilation et installation d'OpenCV.
  2. Configuration de Netbeans.
  3. Un exemple de programme.

L'environnement que j'utilise est : Windows 7, OpenCV 2.4.0, Netbeans 7 et MinGW 3.20 (avec le compilateur gcc 4.6.2).

Hypothèses : MinGW et Netbeans sont déjà installés sur votre système.

Compilation et installation d'OpenCV

Lors du téléchargement d'OpenCV, l'archive contient déjà des binaires pré-construits (bibliothèques compilées et DLL) dans le dossier 'build'. Au début, j'ai essayé d'utiliser ces binaires, en supposant que quelqu'un avait déjà fait le travail de compilation pour moi. Ça n'a pas marché.

Finalement, je me suis dit que je devais compiler la bibliothèque entière sur mon propre système pour qu'elle fonctionne correctement.

Heureusement, le processus de compilation est assez facile, grâce à CMake. CMake (pour Cross-platform Make) est un outil qui génère des makefiles spécifiques à votre compilateur et à votre plateforme. Nous utiliserons CMake pour configurer nos paramètres de construction et de compilation, générer un "makefile", puis compiler la bibliothèque.

Les étapes sont les suivantes:

  1. Téléchargez CMake et installez-le (dans l'assistant d'installation, choisissez d'ajouter CMake au système PATH).
  2. Téléchargez la version 'release' de OpenCV .
  3. Extrayez l'archive dans un répertoire de votre choix. J'utiliserai c:/opencv/.
  4. Lancez CMake GUI.
    1. Recherchez le répertoire source c:/opencv/.
    2. Choisissez où créer les binaires. J'ai choisi c:/opencv/release.
      CMake Configuration - 1
    3. Cliquez sur "Configurer". Dans l'écran qui s'ouvre, choisissez le générateur en fonction de votre compilateur. Dans notre cas, c'est "MinGW Makefiles".
      CMake Configuration - 2
    4. Attendez que tout se charge, vous verrez ensuite cet écran:
      CMake Configuration - 3
    5. Modifiez les paramètres si vous le souhaitez ou laissez les valeurs par défaut. Lorsque vous avez terminé, appuyez à nouveau sur "Configurer". Vous devriez voir "Configuration effectuée" dans la fenêtre du journal et le fond rouge devrait disparaître de toutes les cellules.
      CMake Configuration - 4
    6. À ce stade, CMake est prêt à générer le makefile avec lequel nous compilerons OpenCV avec notre compilateur. Cliquez sur "Générer" et attendez que le makefile soit généré. Une fois le processus terminé, vous devriez voir "Génération terminée". A partir de là, nous n'aurons plus besoin de CMake.
  5. Ouvrez le shell MinGW (les étapes suivantes peuvent également être effectuées à partir de l'invite de commande de Windows).
    1. Entrez dans le répertoire c:/opencv/release/.
    2. Tapez mingw32-make et appuyez sur entrée. Cela devrait démarrer le processus de compilation.
      MinGW Make
      MinGW Make - Compilation
    3. Une fois la compilation terminée, les binaires d'OpenCV sont prêts à être utilisés.
    4. Pour plus de commodité, nous devons ajouter le répertoire C:/opencv/release/bin au système PATH . Cela garantira que nos programmes peuvent trouver les DLL nécessaires à l'exécution.

Configuration de Netbeans

Les netbeans doivent être informés où trouver les fichiers d'en-tête et les bibliothèques compilées (qui ont été créées dans la section précédente).

Les fichiers d'en-tête sont nécessaires pour deux raisons: pour la compilation et pour l'achèvement du code. Les bibliothèques compilées sont nécessaires pour l'étape de liaison.

Remarque: Pour que le débogage fonctionne, les DLL OpenCV doivent être disponibles, c'est pourquoi nous avons ajouté le répertoire qui les contient au système PATH (section précédente, étape 5.4).

Tout d'abord, vous devez vérifier que Netbeans est correctement configuré pour fonctionner avec MinGW. Veuillez voir la capture d'écran ci-dessous et vérifier que vos paramètres sont corrects (compte tenu des changements de chemins en fonction de votre propre installation). Notez également que la commande make doit provenir de msys et pas de Cygwin.

Netbeans MinGW Configuration

Ensuite, pour chaque nouveau projet que vous créez dans Netbeans, vous devez définir le chemin d'inclusion (le répertoire qui contient les fichiers d'en-tête), le chemin des bibliothèques et les bibliothèques spécifiques que vous avez l'intention d'utiliser. Cliquez avec le bouton droit sur le nom du projet dans le volet "projets" et choisissez "propriétés". Ajoutez le chemin d'inclusion (modifiez le chemin en fonction de votre propre installation):

Netbeans Project Include Path

Ajoutez le chemin des bibliothèques:

Netbeans Libraries Path

Ajoutez les bibliothèques spécifiques que vous souhaitez utiliser. Ces bibliothèques seront liées dynamiquement à votre programme à l'étape de la liaison. Habituellement, vous aurez besoin de la bibliothèque core ainsi que de toute autre bibliothèque en fonction des besoins spécifiques de votre programme.

Netbeans Include Libraries

Voilà, vous êtes maintenant prêt à utiliser OpenCV!

Sommaire

Voici les étapes générales à suivre pour installer OpenCV et l'utiliser avec Netbeans:

  1. Compilez OpenCV avec votre compilateur.
  2. Ajoutez le répertoire qui contient les DLL à votre CHEMIN système (dans notre cas: c:/opencv/release/bin).
  3. Ajoutez le répertoire qui contient les fichiers d'en-tête au chemin d'inclusion de votre projet (dans notre cas: c:/opencv/build/include).
  4. Ajoutez le répertoire qui contient les bibliothèques compilées au chemin des bibliothèques de votre projet (dans notre cas: c:/opencv/release/lib).
  5. Ajoutez les bibliothèques spécifiques dont vous avez besoin pour être lié à votre projet (par exemple: libopencv_core240.dll.a).

Exemple - "Hello World" avec OpenCV

Voici un petit exemple de programme qui dessine le texte "Hello World:)" sur une fenêtre GUI. Vous pouvez l'utiliser pour vérifier que votre installation fonctionne correctement. Après avoir compilé et exécuté le programme, vous devriez voir la fenêtre suivante:

OpenCV Hello World

#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main(int argc, char** argv) {
    //create a gui window:
    namedWindow("Output",1);

    //initialize a 120X350 matrix of black pixels:
    Mat output = Mat::zeros( 120, 350, CV_8UC3 );

    //write text on the matrix:
    putText(output,
            "Hello World :)",
            cvPoint(15,70),
            FONT_HERSHEY_PLAIN,
            3,
            cvScalar(0,255,0),
            4);

    //display the image:
    imshow("Output", output);

    //wait for the user to press any key:
    waitKey(0);

    return 0;
}
17
EyalAr

Ça ne marche pas pour moi. J'ai passé quelques jours à suivre chaque tutoriel que j'ai trouvé sur le net et j'ai finalement compilé mes propres binaires. Everyting est décrit ici: OpenVC 2.4.5, Eclipse CDT Juno, erreur MinGW 0xc0000005

Après de nombreux essais et erreurs, j'ai décidé de suivre le tutoriel this et de compiler mes propres binaires car il semble que trop de gens se plaignent que les binaires précompilés ne fonctionnent PAS pour eux. Eclipse CDT Juno était déjà installé.

Ma procédure était la suivante:

  1. Téléchargez et installez MinGW et ajoutez-le au système PATH avec c:/mingw/bin
  2. Téléchargez cmake depuis http://www.cmake.org et installez-le
  3. Télécharger la version Windows d'OpenCV2.4.5
  4. Installer/décompresser Opencv sur C:\OpenCV245PC\(README, index.rst et CMakeLists.txt sont là avec tous les sous-dossiers)
  5. Exécutez l'outil GUI CMake, puis
  6. Choisissez C:\OpenCV245PC\comme source
  7. Choisissez la destination, C:\OpenCV245MinGW\x86 où construire les binaires
  8. Appuyez sur le bouton Configurer, choisissez MinGW Makefiles comme générateur. Il y a des reflets rouges dans la fenêtre, choisissez les options selon vos besoins.
  9. Appuyez à nouveau sur le bouton Configurer . La configuration est maintenant terminée.
  10. Appuyez sur le bouton Générer.
  11. Quittez le programme lorsque la génération est terminée.
  12. Quittez le programme Cmake.
  13. Exécutez le mode de ligne de commande (cmd.exe) et accédez au répertoire de destination C:\OpenCV245MinGW\x86
  14. Tapez "mingw32-make". Vous verrez une progression de la construction des binaires. Si la commande n'est pas trouvée, vous devez vous assurer que le CHEMIN système est ajouté avec c:/mingw/bin. La construction continue selon les options choisies jusqu'à la fin.
  15. Dans le système Windows PATH (Poste de travail> clic droit sur le bouton> Propriétés> Avancé> Variables d'environnement> Chemin), ajoutez le répertoire bin de la destination, C:\OpenCV245MinGW\x86\bin
  16. REDÉMARRER L'ORDINATEUR
  17. Accédez à l'IDE Eclipse CDT, créez un programme C++ à l'aide de l'exemple de code OpenCV (vous pouvez utiliser le code en haut de cette rubrique).
  18. Accédez à Projet> Propriétés> Génération C/C++> Paramètres> Compilateur GCC C++> Inclut et ajoutez le dossier OpenCV source "C:\OpenCV245PC\build\include"
  19. Allez dans Projet> Propriétés> C/C++ Build> Paramètres> MinGW C++ Linker> Bibliothèques, et ajoutez-les aux bibliothèques (-l) ONE BY ONE ( cela peut varier d'un projet à, vous pouvez ajouter tous si vous aimez ou certains d'entre eux seulement ceux que vous avez besoin pour votre projet): opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_photo245 opencv_stitching245 opencv_video245 opencv_videostab245
  20. Ajoutez le dossier de bibliothèque OpenCV intégré, "C:\OpenCV245MinGW\x86\lib" à Chemin de recherche de bibliothèque (-L) .

Vous pouvez utiliser ce code pour tester votre configuration:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR);

namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);

waitKey(0);
return 0;
}

N'oubliez pas de mettre l'image dans le C:/(ou partout où vous pourriez trouver approprié, assurez-vous simplement qu'Eclipse a lu l'accès.

13
Nenad Bulatovic

Si vous avez installé opencv 2.4.2, vous devez modifier le -lopencv_core240 à -lopencv_core242

J'ai fait la même erreur.

3
doenonesmith

Sur Windows 64bits, cela fonctionne:

  1. Télécharger opencv-3.0 (beta) , MinGW (outil en ligne de commande);
  2. Ajouter le dossier bin respectif ci-dessus à la variable PATH;
  3. Créez un dossier "release" (peut être n'importe quel nom) dans;
  4. Dans le dossier créé, ouvrez le terminal Prompt et exécutez les commandes ci-dessous;
  5. Copier et coller cette commande

    cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\

  6. Exécutez cette commande mingw32-make

  7. Exécutez cette commande mingw32-make install

[~ # ~] terminé [~ # ~]

2
aspadacio

J'ai utilisé les instructions de cette étape par étape et cela a fonctionné.

http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-Eclipse-cdt-juno.html

1
s.shpiz

Comme l'a souligné @Nenad Bulatovic, il faut être prudent lors de l'ajout de bibliothèques (19e étape). il ne faut ajouter aucun espace de fin lors de l'ajout de chaque bibliothèque ligne par ligne. sinon mingw se détraque.

0
gyro