Comment installer OpenCV 2.4 et compiler mon code avec MinGW?
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:\
.
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:
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
.
Sélectionnez "C Compiler" et "C++ Compiler" à installer.
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.
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:
4. Où aller d'ici?
Maintenant que votre environnement OpenCV est prêt, quelle est la prochaine étape?
C:\opencv\samples\cpp
.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:
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:
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.
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:
c:/opencv/
.c:/opencv/
.c:/opencv/release
.c:/opencv/release/
.mingw32-make
et appuyez sur entrée. Cela devrait démarrer le processus de compilation.C:/opencv/release/bin
au système PATH . Cela garantira que nos programmes peuvent trouver les DLL nécessaires à l'exécution.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.
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):
Ajoutez le chemin des bibliothèques:
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.
Voilà, vous êtes maintenant prêt à utiliser OpenCV!
Voici les étapes générales à suivre pour installer OpenCV et l'utiliser avec Netbeans:
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:
#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;
}
Ç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:
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.
Si vous avez installé opencv 2.4.2, vous devez modifier le -lopencv_core240
à -lopencv_core242
J'ai fait la même erreur.
Sur Windows 64bits, cela fonctionne:
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 ..\
Exécutez cette commande mingw32-make
Exécutez cette commande mingw32-make install
[~ # ~] terminé [~ # ~]
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
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.