Programmer avec CodeBlocks et OpenCV


[1]

[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).
fatal error: cv.h: No such file or directory

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.

Licence OpenCV : OpenCV is released under a BSD license

Remarque : le fichier mingw7z ci-dessus fait environ 18 Mo mais, une fois extraits, les répertoires «lib» et «bin» font environ 138 Mo.