IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

OpenCV sous linux


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut OpenCV sous linux
    Bonjour,
    je souhaite travailler avec Opencv sous linux. J'ai donc trouver un tuto pour installer Opencv 2.1 . Cette partie ne pose pas de probleme.

    J'ai créé un programme permettant d'afficher une image. J'ai aussi creer un makefile pour compiler le programme

    Voici le makefile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    EXEC=/home/xavier/Desktop/ProjetCpp/src/prog
    CC=gcc
    LD=g++
    DIR=/home/xavier/Desktop/ProjetCpp
    DIR2=/home/xavier/OpenCV-2.0.0
    CCFLAGS=-c -Isrc -I$(DIR2)/bin -I$(DIR2)/include/opencv -I$(DIR)/include 
     
    SRC= ${wildcard src/*.cpp}
    OBJ= ${patsubst %.cppu, %.o, ${SRC}}
     
    all: ${EXEC}
     
    ${EXEC}: ${OBJ}
    	${LD} ${OBJ} ${CCFLAGS} -o $@
     
    %.o: %.cpp
    	${CC} ${CCFLAGS} $< -o $@
     
    open:	gedit Makefile src/*.cpp &
     
    clean:
    	rm -f *~ include/*~ src/*~ $(OBJ) $(EXEC)
     
    mrproper: clean
    	rm -f ${EXEC}
    La compilation se passe sont soucis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    make -k
    g++ src/Prog.cpp -c -Isrc -I/home/xavier/OpenCV-2.0.0/bin -I/home/xavier/OpenCV-2.0.0/include/opencv -I/home/xavier/Desktop/ProjetCpp/include  -o /home/xavier/Desktop/ProjetCpp/src/prog
     
    Compilation finished at Tue Dec 21 15:11:03
    Par contre quand je lance le programme:
    ./Prog

    Le programme s'execute mais rien ne se passe.
    Voici le programme pour l'affichage de l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include "/home/xavier/OpenCV-2.0.0/include/opencv/cv.h"
    #include "/home/xavier/OpenCV-2.0.0/include/opencv/highgui.h"
     
    using namespace cv;
     
    int main()
    {
    	Mat img;
    	img=imread("/home/xavier/Desktop/ProjetCpp/src/baboon.jpg");
     
    	CvRect rect = cvRect(10, 20, 50, 60);
     
    	imshow("test",img);
     
    	return 0;
    }

    Voila si qu'lqu'un aurait une solution?
    D'avance merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Salut !

    C'est tout à fait normal : tu n'as pas fait de boucle, donc l'image apparaît une fraction de seconde et disparaît dès que le programme s'arrête. Tu dois écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main()
    {
    	Mat img = imread("/home/xavier/Desktop/ProjetCpp/src/baboon.jpg");
    	//CvRect rect = cvRect(10, 20, 50, 60); // inutile dans ce code
            namedWindow myWindow("test",CV_WINDOW_AUTOSIZE);
    	imshow("test",img);
            while(waitKey(30) == -1){} 
    	return 0;
    }
    Le programme quittera dès lors que tu appuieras sur une touche. Voir la doc de cv::waitKey sur le site officiel.

    Edit: Au temps pour moi, ça ne suffit pas. Il faut aussi que tu crées une cv::namedWindow. Voir le code mis à jour.

    Je te conseille d'utiliser CMake plutôt qu'un makefile. Il y a un petit coût d'apprentissage de CMake, mais c'est bien plus puissant. Tu peux t'inspirer de ce projet qui utilise CMake et OpenCV : https://github.com/Steren/notouchscreen

Discussions similaires

  1. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  2. Comment désinstaller MySQL sous linux
    Par nahmsath dans le forum Installation
    Réponses: 5
    Dernier message: 18/09/2007, 10h46
  3. Réponses: 1
    Dernier message: 01/10/2006, 15h44
  4. installer jbuilder7 sous linux
    Par rtlinfo34 dans le forum JBuilder
    Réponses: 5
    Dernier message: 30/10/2002, 19h16
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo