Compiler un programme OpenCV avec code::blocks sous Windows
OpenCV est une librairie graphique multi-plateforme et je m’en sers pour une application qui doit pouvoir tourner à la fois sur Linux et Windows (http://opencv.willowgarage.com/wiki/).
Pour utiliser OpenCV sur Linux, c’est très simple.
sudo apt-get install libhighgui-dev sudo apt-get install libcv-dev sudo apt-get install libcvaux-dev
Et pour compiler un programme utilisant OpenCV :
g++ -o hello_world hello_world.cpp `pkg-config --cflags --libs opencv`
Ce qui revient à :
g++ -o hello_world hello_world.cpp -I/usr/include/opencv -lml -lcvaux -lhighgui -lcv -lcxcore
Pour utiliser OpenCV sous Windows, c’est moins simple.
Après avoir installer OpenCV, ajouter dans les variables d’environnement à la variable PATH le chemin suivant (chemin par défaut de l’installeur) :
C:\OpenCV2.2\bin
Ensuite lancer Code::Blocks, charger votre code qui utilise OpenCV et HighGui.
Il faut maintenant le compiler:
Faîtes un clic droit sur votre_prog (ici test_opencv) et aller dans « Build options ».
Faîtes les ajouts suivants :
Et ceux-ci:
Voilà, vous pouvez désormais compiler votre programme.
Bonjour Boutor,
Difficile de compiler, j’éssaie mais sans succès. Je viens de suivre votre tutorial, mais le programme bloque dès qu’il rencontre une fonction de la classe cv.h. Les exemples présent dans le répertoire sample marche bien, ce qui prouve que opencv est bien installé.
Je suis sous windows vista x64 et mes programme sont sous code block.
Pourriez vous m’aider en me donnant quelques précisions ou conseille.
Merci d’avance
Stéphane
Bonjour Stéphane,
De mémoire, les exemples sont compilés en local, avant make install.
On ne peut pas s’en inspirer pour ce genre de problèmes.
Tu as un problème avec tes search directories, je pense.
Peux-tu poster un programme d’exemple et le résultat obtenu?
Merci.
Bonjour Boutor,
Merci d’abord pour ta réponse.J’utilise open2.3 et codeblocks 10.05
Le programme bloque sur la première ligne de cv.h un include.
Celà correspond à ce que tu me dis.
#include « opencv2/core/core_c.h » no such file or directory 1ere ligne d’erreur.
Je bloque depuis hier soir dessus et pas trop d’explication sur internet.
Mes Search directories
..\..\..\..\..\OpenCV2.3\include\opencv
..\..\..\..\..\OpenCV2.3\include\opencv2
Mon programme
#include
#include « cv.h »
#include « highgui.h »
int main()
{
float a[] = {0.707,-0.707,0,1, 0.707,0.707,0,1, 0,0,1,0, 0,0,0,1};
cv::Mat mat(4,4,CV_32FC1,a);
std::cout << mat.at(0,0) << " " << mat.at(0,1) << std::endl;
return 0;
}
A bientôt
Stéphane
Essaie de remplacer tes liens type « ..\..\..\..\..\OpenCV2.3\include\opencv » pour les mettre en dur, comme C:\OpenCV2.3\include\opencv. On peut rapidement avoir des erreurs dans les remontées en ../../../.. .
As-tu les deux répertoires include/opencv et include/opencv2?
En search directory, ajoute C:\OpenCV2.3\include pour voir.
Pas facile de chercher une erreur qu’on a pas chez soit. ;o)
En plus, je n’ai Windows qu’au travail!
Rebonjour Boutor,
Essaie de remplacer tes liens type “..\..\..\..\..\OpenCV2.3\include\opencv” pour les mettre en dur, comme C:\OpenCV2.3\include\opencv. On peut rapidement avoir des erreurs dans les remontées en ../../../.. .-> c’est bon je viens de changer, doit on aussi renseigner le path de windows, j’ai laisser le prog renseigner tous seul ce champ, je n’ai pas voulu modifié de peur de faire des bêtises
As-tu les deux répertoires include/opencv et include/opencv2?
En search directory, ajoute C:\OpenCV2.3\include pour voir->je viens de le faire
Plus de pb de compilation mais de code,
Que me conseilles tu pour apprendre facilement?
As tu fais des programmes sympas avec opencv?
A bientôt
Stéphane
Rebonjour,
J’essai de faire marcher ce petit programme et celà ne marche pas.
J’ai pris un prog simple donné en exemple dans les tutorials fourni avec OpenCV-2.3.0.
Donc ce prog doit marché.J’ai vraiment l’impression d’être un boulet.
Il bloque à la premiére instruction de cv qu’il rencontre, sais tu comment résoudre le pb ou peut tu me donner une piste.
////////////////////////////////////////////////////////////////////////
//
// hello-world.cpp
//
// This is a simple, introductory OpenCV program. The program reads an
// image from a file, inverts it, and displays the result.
//
////////////////////////////////////////////////////////////////////////
/**
* @file AddingImages.cpp
* @brief Simple linear blender ( dst = alpha*src1 + beta*src2 )
* @author OpenCV team
*/
#include
#include
#include
using namespace cv;
/**
* @function main
* @brief Main function
*/
int main( int argc, char** argv )
{
double alpha = 0.5; double beta; double input;
Mat src1, src2, dst;
/// Ask the user enter alpha
std::cout<<" Simple Linear Blender "<<std::endl;
std::cout<<"———————–"<<std::endl;
std::cout<>input;
// We use the alpha provided by the user iff it is between 0 and 1
if( alpha >= 0 && alpha Bloque ici
src2 = imread(« C:/images/WindowsLogo.jpg »);
if( !src1.data ) { printf(« Error loading src1 \n »); return -1; }
if( !src2.data ) { printf(« Error loading src2 \n »); return -1; }
/// Create Windows
namedWindow(« Linear Blend », 1);
beta = ( 1.0 – alpha );
addWeighted( src1, alpha, src2, beta, 0.0, dst);
imshow( « Linear Blend », dst );
waitKey(0);
return 0;
}
A Bientôt
Stéphane
Il faut que j’y arrive avant ce soir….
std::cout >> input; // Simple ou double flèche à vérifier
// We use the alpha provided by the user iff it is between 0 and 1
if( alpha >= 0 && alpha <= 1 ) {
src2 = imread("C:/images/WindowsLogo.jpg");
}
Et avec ça?
Je regarde et je te redis, je suis en train de voir pour passé sur ubuntu.
Je pense que ce sera plus facile vu tout ce que j’ai vu sur internet.
OpenCV à l’air sympa à utiliser.
A bientôt
Stéphane