Programmer avec CodeBlocks et OpenCV
[01] [02] [03] [04] [05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]
La page Programmer avec Visual Studio 2012 Express et OpenCV montre comment Visual Studio permet de réaliser de puissants traitements sur les images lorsqu'il est utilisé avec la bibliothèque graphique libre OpenCV.
La bibliothèque OpenCV peut également être utilisée avec l'environnement de développement libre CodeBlocks et avec le compilateur libre C/C++ MinGW. Cependant, en examinant le contenu du répertoire «opencv\buid\x86» d'OpenCV, une fois OpenCV installé sur un PC, on s’aperçoit qu’il ne contient malheureusement pas le répertoire «mingw» contenant les librairies et les dll compatibles avec CodeBlocks.
Pour pouvoir utiliser OpenVC avec CodeBlocks, il faut donc préalablement fabriquer l'ensemble des librairies, statiques (lib) et de liens dynamiques (dll) nécessaires, à partir du code source opencv qui se trouve dans le répertoire «opencv\sources».
Pour cela on utilise ici les outils suivants qui sont utilisables avec un PC doté du système d'exploitation Windows XP SP3 ou ultérieur :
- codeblocks-16.01 (environnement de développement, version du 28 Jan 2016, incluant le compilateur mingw 4.9);
- OpenCV 2.4.13 (bibliothèque graphique en code source version du 19 mai 2016);
- CMake 3.6 (outil de préparation de projet).
La présence page montre comment réaliser cette opération en détaillant pas à pas comment :
- utiliser l'outil de préparation de projet Cmake puis le compilateur «MinGW» (logiciels libres) afin de construire les librairies permettant d'utiliser OpenCV avec CodeBlocks;
- paramétrer l'environnement de développement CodeBlocks afin qu'il puisse trouver les fichiers d'entête et les librairies de OpenCV;
- écrire, compiler et exécuter un programme graphique utilisant OpenCV.
Remarques : ce qui suit a été effectué avec un système d'exploitation Windows 32bit. Les opérations à conduire sont les mêmes avec un un système d'exploitation Windows 64bit.
1) Télécharger et installer CodeBlocks
1.1) Télécharger CodeBlocks
[01] puis Visionneuse
Se connecter sur le site officiel de CodeBlocks. Cliquer le bouton «Download».
[02] puis Visionneuse
Cliquer le lien «Download the binary release».
[03] puis Visionneuse
Cliquer le lien «Windows XP/Vista/7/8.x/10».
[04] puis Visionneuse
Cliquer le lien «codeblocks-16.01mingw-setup.exe» et suivre la progression du téléchargement.
[05] puis Visionneuse
Quand le téléchargement est terminé, repérer l'emplacement du fichier «codeblocks-16.01mingw-setup.exe» sur le PC et cliquer ce fichier.
1.2) Installer Codeblocks
[06] puis Visionneuse
Cliquer «Exécuter»
[07] puis Visionneuse
Cliquer «Next»
[08] puis Visionneuse
Cliquer «I Agree»
Vérifier que tous les composants sont cochés puis cliquer «Next»[09] puis Visionneuse
Vérifier que tous les composants sont cochés puis cliquer «Next»
[10] puis Visionneuse
Cliquer «Install»
[11] puis Visionneuse
Suivre la progression de l'installation.
[12] puis Visionneuse
Cliquer «Oui» pour vérifier tout de suite que CodeBlocks démarre bien
[13] puis Visionneuse
Observer l'ouverture de CodeBlocks et cliquer «Finish».
1.3) Explorer le contenu du répertoire de CodeBlocks
[14] puis Visionneuse
Repérer l'emplacement du répertoire «CodeBlocks» dans «C:/Program Files». Cliquer ce répertoire.
[15] puis Visionneuse
Explorer le répertoire «C:/Program Files/CodeBlocks».
Repérer l'exécutable «codeblock.exe» et le répertoire «MinGW» où se trouve le compilateur mingw utilisé par codeblocks.
Cliquer ce répertoire.
[16] puis Visionneuse
Examiner le contenu du répertoire «MinGW». Cliquer le répertoire «bin»
[17] puis Visionneuse
Repérer le fichier «mingw32-make.exe» qui sera utilisé par la suite. Fermer la fenêtre
2) Télécharger et installer OpenCV (Open Source Computer Vision)
2.1) Télécharger OpenCV
[18] puis Visionneuse
Se connecter sur le site officiel de OpenCV. Cliquer le lien «OpenCV for Windows» version 2.4.13
[19] puis Visionneuse
Suivre la progression du téléchargement qui se déroule automatiquement depuis le site sourceforge.net
2.2) Installer OpenCV
[20] puis Visionneuse
Repérer l'emplacement du fichier «opencv-2.4.13.exe» sur le PC. Cliquer ce fichier.
[21] puis Visionneuse
Le processus d'installation de opencv se déroule automatiquement. Il consiste en une simple extraction et installation sur «C:» du répertoire «opencv» et de son contenu
2.3) Explorer le contenu du répertoire où est installé OpenCV
[22] puis Visionneuse
Repérer le répertoire «C:/opencv». Cliquer ce répertoire.
[23] puis Visionneuse
Repérer les répertoires «build» et «sources» dans «opencv». Cliquer le répertoire «build».
[24] puis Visionneuse
Repérer le répertoire «x86» dans «build» et cliquer ce répertoire.
[25] puis Visionneuse
Repérer les répertoires «vc11» et «vc12». Constater l'absence de répertoire «mingw». Cliquer «vc11» par exemple.
[26] puis Visionneuse
«vc11» et «vc12» contiennent, dans les répertoires «lib» et «bin», les librairies statiques (.lib) et dynamiques (.dll) qui sont utilisables spécifiquement par Visual Studio 2012 et 2013. Cliquer le répertoire «bin».
[27] puis Visionneuse
Repérer dans ce répertoire les fichiers .dll qui constituent les librairies dynamiques. Cliquer la flèche horizontale en haut à gauche pour revenir en arrière.
[28] puis Visionneuse
Repérer dans le répertoire «lib» les fichiers .lib qui constituent les librairies statiques. Cliquer la flèche horizontale en haut à gauche pour revenir en arrière.
2.4) Créer dans OpenCV un répertoire vide pour MinGW
[29] puis Visionneuse
Une fois revenu dans le répertoire «C:/opencv/build/x86», cliquer «Fichier/Nouveau/Dossier»
[30] puis Visionneuse
Créer un répertoire vide appelé «mingw» dans «C:/opencv/build/x86». Fermer la fenêtre.
3) Télécharger et installer CMake
CMake est un outil de préparation de projet. Il permet de préparer un projet source, en utilisant un fichier de configuration appelé CMakeLists.txt. Une fois le projet source préparé, le compilateur mingw peut alors effectuer directement et automatiquement la compilation et l'édition des liens de ce projet pour produire les fichiers finaux (éxécutables, librairies statiques, librairies dynamiques).
3.1) Télécharger CMake
[31] puis Visionneuse
Se connecter sur le site officiel de CMake. Cliquer le bouton «Download»
[32] puis Visionneuse
Cliquer le lien «cmake-3.6.0-rc2-win32-x86.msi» (on prend la version x86 si le PC est en version 32bit de Windows et la version x64 si le PC est en version 64bit de Windows)
[33] puis Visionneuse
Suivre la progression du téléchargement indiquée en bas de la fenêtre
3.2) Installer Cmake
[34] puis Visionneuse
Quand le téléchargement est terminé, repérer l'emplacement du fichier «cmake-3.6.0-rc2-win32-x86.msi» sur le PC. Cliquer ce fichier.
[35] puis Visionneuse
Cliquer «Exécuter».
[36] puis Visionneuse
Cliquer «Next».
[37] puis Visionneuse
Cocher «Accepter les termes de la licence» puis cliquer «Next».
[38] puis Visionneuse
Cocher l'option «Add Cmake to the system PATH for the current user». Cela crée automatiquement la variable d'environnement correspondante pour Windows, ce qui évite d’avoir à la créer à la main par la suite (cf 46).
[39] puis Visionneuse
Cliquer «Next».
[40] puis Visionneuse
Cliquer «Install».
[41] puis Visionneuse
Suivre la progression de l'installation.
[42] puis Visionneuse
A la fin de l'installation, cliquer «Finish».
3.3) Explorer le contenu du répertoire où est installé CMake
[43] puis Visionneuse
Repérer le répertoire «C:\Program File\CMake» où est installé CMake. Cliquer ce répertoire.
[44] puis Visionneuse - Créer un nouveau projet
Examiner les répertoires contenus dans le répertoire «C:\Program File\CMake». Cliquer le répertoire «bin».
[45] puis Visionneuse
Repérer le fichier «cmake-gui.exe». Fermer la fenêtre.
4) Mettre à jour les variables environnement de Windows
Les variables d’environnement sont des variables utilisée par Windows pour pouvoir faire fonctionner et communiquer ensemble des programmes qui ne se trouvent pas dans les mêmes répertoires. Ces variables peuvent être mises àjour depuis le panneau de configuration de Windows.
[46] puis Visionneuse
Aller dans le panneau de configuration de Windows (Démarrer/Panneau de configuration). Cliquer «Système».
[47] puis Visionneuse
Cliquer l'onglet «Avancé».
[48] puis Visionneuse
Cliquer le bouton «Variables d'environnement».
[49] puis Visionneuse
Vérifier que la variable «C:\Program File\CMake» est présente dans la partie variable PATH (normalement elle a été créée automatiquement par Cmake lors de son installation cf 38, si ce n'est pas le cas il faut la rajouter). Dans la partie «Variables Système», cliquer «Path» puis «Modifier»
[50] puis Visionneuse
Dans la zone de saisie de texte «Valeur de la variable», ajouter C:\Program Files\CodeBlocks\MinGW\bin; C:\opencv; C:\opencv\build\x86\mingw\bin; puis cliquer «OK»
[51] puis Visionneuse
Ouvrir l'invite de commande DOS (Démarrer/Tous les programmes/Accessoires/Invite de commandes). Saisir « path » puis valider. Vérifier que les trois variables d'environnement apparaissent dans la liste. Fermer la fenêtre.
5) Exécuter CMake pour préparer le projet OpenCV pour MinGW
Avant de lancer la compilation et l'édition des liens d'un projet source (généralement composé de plusieurs fichiers sources de différents types h, cpp répartis dans un ou plusieurs répertoires), il faut préparer ce projet pour qu'il soit parfaitement utilisable par le compilateur et l'éditeur des liens utilisé. Cette préparation peut être effectuée par l'outil opensource CMake qui a besoin pour cela d'un fichier source appelé «CMakeLists.txt» contenant les principales caractéristiques du projet source (répertoires, chemins, librairies, définitions, particularités...). Ce fichier fait normalement partie de l'ensemble des fichiers sources d'un projet. Dans le cas du présent projet opencv il se trouve dans le répertoire «C:\opencv\sources».
[52] puis Visionneuse
Vérifier la présence du fichier «CMakeLists.txt» dans le répertoire «C:\opencv\sources».
[53] puis Visionneuse
Lancer «cmake-gui.exe».
[54] puis Visionneuse
Indiquer «C:\opencv\sources» dans la zone de saisie de texte «Where is the source code»
Indiquer «C:\opencv\build\x86\mingw» dans la zone de saisie de texte «Where to build the libraries»
Cliquer le bouton «Configure».
[55] puis Visionneuse
Lors de la première utilisation de cmake une boîte de dialogue s'affiche demandant d'indiquer le nom du compilateur pour lequel le travail est destiné. Dans le cas présent, choisir le compilateur MinGW puis cliquer le bouton «Finish».
[56] puis Visionneuse
Cliquer le bouton «Configure», pour configurer le projet.
[57] puis Visionneuse
Observer la progression de la configuration par cmake du projet source opencv .
[58] puis Visionneuse
Le message «Configuring done» indique que la phase de configuration est terminée. Cliquer le bouton «Generate»
[59] puis Visionneuse
Le message «Generating done» indique que la phase de génération est terminée. Fermer Cmake.
6) Créer les librairies OpenCV avec le compilateur MinGW
Les librairies statiques (lib) et de liens dynamiques (dll) opencv doivent obligatoirement être créées par le même compilateur et éditeur des liens que celui qui sera utilisé pour compiler et faire l’édition des liens des programmes sources cpp et h écrits par le programmeur. Il s’agit du compilateur et éditeur des liens «MinGW» dans le cas présent.
6.1) Fabriquer les librairies
[60] puis Visionneuse
Ouvrir l'invite de commande DOS («Démarrer/Tous les programmes/Accessoires/Invite de commandes»). Aller dans le répertoire «C:\opencv\build\x86\mingw» en utilisant la commande DOS «cd». Une fois dans ce répertoire, saisir (après l'invite DOS >) mingw32-make et valider.
[61] puis Visionneuse
Suivre la progression de mingw dans la compilation et l'édition des liens des fichiers source de opencv.
[62] puis Visionneuse
La compilation des programmes sources et l'édition des liens des programmes objets de opencv dure environ 45mn. Lorsque l'opération est terminée l'invite DOS «C:\opencv\build\x86\mingw>_» apparaît. Fermer la fenêtre de l'invite de commandes.
6.2) Explorer les répertoires des librairies fabriquées
[63] puis Visionneuse
Explorer le contenu du répertoire «opencv\build\x86\mingw» et repérer les deux répertoires créés : le répertoire «bin»pour les fichiers «.lib» et le répertoire «bin»pour les fichiers «.dll».
[64] puis Visionneuse
Explorer le répertoire «C:\opencv\build\x86\mingw\bin».
[65] puis Visionneuse
Explorer le répertoire «C:\opencv\build\x86\mingw\lib» (il est à noter qu'avec mingw l'extension des fichier librairies est .a et non pas .lib comme avec Visual Studio). Fermer la fenêtre.
7) Créer un programme graphique avec CodeBlocks
7.1) Créer un nouveau projet
[66] puis Visionneuse
Lancer CodeBlocks puis cliquer «File/New/Project...
[67] puis Visionneuse
Choisir «Console application» puis cliquer «Go».
[68] puis Visionneuse
Cliquer «Next».
[69] puis Visionneuse
Choisir C++ puis cliquer «Next>».
[70] puis Visionneuse
Indiquer le nom et l'emplacement du projet (par exemple «test» sur «D:»). Cliquer «Next>».
[71] puis Visionneuse
Décocher la case à option prérenseignée avec «Debug». En effet, le mode «Debug» indique que le projet est actuellement dans un mode adapté pour le débogage du programme et non pas pour l'éxécution de ce programme (mode «Release»). Ici, on souhaite pouvoir exécuter directement et rapidement le projet dès que la compilation et l’édition des liens sont terminés. Cliquer «Finish».
7.2) Configurer le projet
[72] puis Visionneuse
Pour configurer le projet, cliquer droit sur le nom du projet («test», écrit en gras), à gauche dans la boîte de Management du projet.
[73] puis Visionneuse
Cliquer «Properties...».
[74] puis Visionneuse
Cliquer «Project's build options...».
[75] puis Visionneuse
Cliquer «Search Directories» puis «Compiler» puis «Add».
[76] puis Visionneuse
Dans la zone de saisie de texte Directory saisir «C:\opencv\build\include» afin d'indiquer au compilateur mingw où se trouvent les fichiers include de opencv. Cliquer «OK>»
[77] puis Visionneuse
Une boîte de dialogue demande si le chemin indiqué doit être considéré comme un chemin relatif. Il est préférable de prendre le chemin absolu. Cliquer «Non».
[78] puis Visionneuse
Le chemin du répertoire «C:\opencv\build\include» est saisi. Cliquer l'onglet «Linker».
[79] puis Visionneuse
Dans la zone de saisie de texte Directory saisir «C:\opencv\build\x86\minw\lib» afin d'indiquer au linker mingw où se trouvent les librairie opencv. Cliquer «OK>».
[80] puis Visionneuse
Cliquer «OK>».
[81] puis Visionneuse
Revenir à la boîte de dialogue «Project build options». Cliquer «Linker settings» puis cliquer le bouton «Add».
[82] puis Visionneuse
Dans la boîte de dialogue «Choose library to link», sélectionner l'ensemble des fichiers librairies qui se trouvent dans le répertoire «C:\opencv\build\x86\minw\lib» (cf liste en fin de page). Rappel : avec mingw l'extension des fichiers librairies est toujours «.a» et non pas «.lib». Cliquer «Ouvrir»
[83] puis Visionneuse
Une boîte de dialogue demande si le chemin indiqué doit être considéré comme un chemin relatif. Il est plus sûr de prendre le chemin absolu. Cliquer «Non».
[84] puis Visionneuse
Cliquer «OK».
[85] puis Visionneuse
Vérifier la présence des fichiers dans la partie «Link libraries» et cliquer «OK».
[86] puis Visionneuse
Cliquer «OK».
[87] puis Visionneuse
Cliquer «File/Save project» pour enregistrer le projet et les réglages effectués.
7.3) Ecrire un programme
[88] puis Visionneuse
Placer le code source (cf code en fin de page) dans le fichier «main.cpp» accessible en cliquant «+Sources» dans la fenêtre de Management du projet.
7.4) Compiler le programme
[89] puis Visionneuse
Cliquer «Buid/Build».
[90] puis Visionneuse
Examiner le compte rendu de compilation dans la partie «Logs & others», en bas de page. Dans le cas présent, il n'y a pas eu d'erreurs.
Remarque
Dans le cas où, lors de la compilation d'un programme, un message d'erreur du type "fatal error: cv.h: No such file or directory" apparait, il suffit d'ajouter dans les réglages du projet le chemin complet du fichier non trouvé (cf 76).
7.4) Exécuter le programme
[91] puis Visionneuse
Cliquer «Buid/Run».
[92] puis Visionneuse
Constater le bon fonctionnement du programme et donc, par voie de conséquence, le bon fonctionnement des paramétrages du projet et des librairies utilisées.
Annexes
Annexe 1 : Liste des fichiers librairies .a
libopencv_videostab_pch_dephelp.a
libopencv_calib3d2413.dll.a
libopencv_calib3d_pch_dephelp.a
libopencv_contrib2413.dll.a
libopencv_contrib_pch_dephelp.a
libopencv_core2413.dll.a
libopencv_core_pch_dephelp.a
libopencv_features2d2413.dll.a
libopencv_features2d_pch_dephelp.a
libopencv_flann2413.dll.a
libopencv_flann_pch_dephelp.a
libopencv_gpu2413.dll.a
libopencv_gpu_pch_dephelp.a
libopencv_haartraining_engine.a
libopencv_highgui2413.dll.a
libopencv_highgui_pch_dephelp.a
libopencv_imgproc2413.dll.a
libopencv_imgproc_pch_dephelp.a
libopencv_legacy2413.dll.a
libopencv_legacy_pch_dephelp.a
libopencv_ml2413.dll.a
libopencv_ml_pch_dephelp.a
libopencv_nonfree2413.dll.a
libopencv_nonfree_pch_dephelp.a
libopencv_objdetect2413.dll.a
libopencv_objdetect_pch_dephelp.a
libopencv_ocl2413.dll.a
libopencv_ocl_pch_dephelp.a
libopencv_perf_calib3d_pch_dephelp.a
libopencv_perf_core_pch_dephelp.a
libopencv_perf_features2d_pch_dephelp.a
libopencv_perf_gpu_pch_dephelp.a
libopencv_perf_highgui_pch_dephelp.a
libopencv_perf_imgproc_pch_dephelp.a
libopencv_perf_nonfree_pch_dephelp.a
libopencv_perf_objdetect_pch_dephelp.a
libopencv_perf_ocl_pch_dephelp.a
libopencv_perf_photo_pch_dephelp.a
libopencv_perf_stitching_pch_dephelp.a
libopencv_perf_superres_pch_dephelp.a
libopencv_perf_video_pch_dephelp.a
libopencv_photo2413.dll.a
libopencv_photo_pch_dephelp.a
libopencv_stitching2413.dll.a
libopencv_stitching_pch_dephelp.a
libopencv_superres2413.dll.a
libopencv_superres_pch_dephelp.a
libopencv_test_calib3d_pch_dephelp.a
libopencv_test_contrib_pch_dephelp.a
libopencv_test_core_pch_dephelp.a
libopencv_test_features2d_pch_dephelp.a
libopencv_test_flann_pch_dephelp.a
libopencv_test_gpu_pch_dephelp.a
libopencv_test_highgui_pch_dephelp.a
libopencv_test_imgproc_pch_dephelp.a
libopencv_test_legacy_pch_dephelp.a
libopencv_test_ml_pch_dephelp.a
libopencv_test_nonfree_pch_dephelp.a
libopencv_test_objdetect_pch_dephelp.a
libopencv_test_ocl_pch_dephelp.a
libopencv_test_photo_pch_dephelp.a
libopencv_test_stitching_pch_dephelp.a
libopencv_test_superres_pch_dephelp.a
libopencv_test_video_pch_dephelp.a
libopencv_ts2413.a
libopencv_ts_pch_dephelp.a
libopencv_video2413.dll.a
libopencv_video_pch_dephelp.a
libopencv_videostab2413.dll.a
Annexe 2 : Code source du programme test
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include ‹iostream›
using namespace cv;
using namespace std;
int main( int argc, const char** argv )
Mat img = imread("D:/mon-image.png", CV_LOAD_IMAGE_UNCHANGED);
if (img.empty())
cout ‹‹ "Error : Image cannot be loaded..!!" ‹‹ endl;
return -1;
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);
waitKey(0);
destroyWindow("MyWindow");
return 0;
}
Annexe 3 : Librairies OpenCV
L'archive opencv-mingw.7z suivante (valable pour CodeBlocks avec Windows 32bit), contient l'ensemble des librairies fabriquées par MinGW lors de la réalisation des étapes décrites ci-dessus. Utiliser l'outil gratuit 7z pour extraire de cette archive : les répertoires «lib » et «bin », avec leur contenu.
- Lire le fichier "licence-opencv.png" (copie image ci-dessous) , inclus dans l'archive, qui reproduit les termes de la licence de OpenCV ("OpenCV is released under a BSD license");
- Placer les répertoires «lib » et «bin » dans le répertoire «C:\opencv\build\x86\mingw» pour utiliser directement OpenCV avec CodeBlock sous Windows 32 bit.
Remarque : le fichier mingw7z ci-dessus fait environ 18 Mo mais, une fois extraits, les répertoires «lib» et «bin» font environ 138 Mo.