Aller au contenu principal

Compiler un programme OpenCV avec code::blocks sous Windows

6 janvier 2011

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.

9 commentaires leave one →
  1. Stéphane permalink
    17 juillet 2011 11 h 23 mi

    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

    • 17 juillet 2011 12 h 31 mi

      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.

      • Stéphane permalink
        17 juillet 2011 12 h 55 mi

        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

      • 17 juillet 2011 13 h 10 mi

        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!

  2. Stéphane permalink
    17 juillet 2011 13 h 32 mi

    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

  3. Stéphane permalink
    17 juillet 2011 14 h 14 mi

    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….

    • 17 juillet 2011 16 h 38 mi

      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?

  4. Stéphane permalink
    17 juillet 2011 17 h 45 mi

    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

Trackbacks

  1. Tweets that mention Compiler un programme OpenCV avec code::blocks sous Windows « Rappels utiles Linux -- Topsy.com

Répondre à Stéphane Annuler la réponse.