Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2009, à 22:09

Evanok

Opencv Compilation ?

Bonsoir a tous,

J'utilise un ubuntu virtualisé avec VirtualBox. J'ai téléchargé opencv sur sourceforge, suivis la procédure d'installation ( configure, make, make install ) j'ai eu quelques erreurs mais elle a eu l'air de se terminer correctement. J'ai ensuite ressortis un programme que j'ai codé sous dev++ avec windows que je dois pouvoir compiler sous ubuntu

J'ai compilé avec la commande suivante :

 gcc `pkg-config --cflags opencv` `pkg-config --libs opencv` 
 -o nomProgramme -c nomProgramme.c

avec au préalable avoir effectué les commandes suivantes pour configurés le PATH :

PKG_CONFIG_PATH=/where/you/have/installed/opencv/lib/pkgconfig:${PKG_CONFIG_PATH}
export PKG_CONFIG_PATH

J'ai eu pas mal d'erreur de compile a cause de petit truc qui collait pas du au passage windows/ubuntu après les avoir réglé quand je compile j'ai finalement ça :

gcc: -lcxcore: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lcv: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lhighgui: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lcvaux: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lml: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite

Après recherche j'ai vu quelquepart qu'il sufissait d'enlever dans la commande de compilation la reference a --libs j'ai donc fais :


 gcc `pkg-config --cflags opencv` 
 -o nomProgramme -c nomProgramme.c

Cette fois ci la compilation passe, lorsque je fais

./nomProgramme

pour le lancer il me met permission non accordé, si je fais un sudo devant commande non reconnu.

Donc voila je cherche une solution, je précise que je suis débutant sous la distribution ubuntu, j'y ai codé quelques fois du code assez basique en c ou ocaml mais c'est tout, niveau installation tout ça je suis souvent les tutos mais après niveau compréhension.

Aussi au passage comment être sur que opencv est bien installé et surtout qu'opencv est installé "correctement".

Merci d'avance, Arthur.

Hors ligne

#2 Le 18/05/2009, à 23:57

doc212

Re : Opencv Compilation ?

salut,

si il te dit permission non accordée quand tu essaies de l'exécuter, c'est que le fichier n'est pas marqué comme exécutable ... en fait je crois que c'est à cause de l'option -c qui crée un fichier objet et pas un exécutable ...

essaie de recompiler sans l'option -c ... (ça expliquerait d'ailleurs les erreurs que tu as obtenues avant concernant l'édition des liens)

Hors ligne

#3 Le 19/05/2009, à 10:28

Evanok

Re : Opencv Compilation ?

alors je pense que oui c'était bien ça mais maintenant quand je compile :

/tmp/cc3sV7tb.o: In function `cvDecRefData':
camMove.c:(.text+0xaad): undefined reference to `cvFree_'
camMove.c:(.text+0xb1e): undefined reference to `cvFree_'
/tmp/cc3sV7tb.o: In function `cvGetRow':
camMove.c:(.text+0xc11): undefined reference to `cvGetRows'
/tmp/cc3sV7tb.o: In function `cvGetCol':
camMove.c:(.text+0xc3c): undefined reference to `cvGetCols'
/tmp/cc3sV7tb.o: In function `cvReleaseMatND':
camMove.c:(.text+0xc4f): undefined reference to `cvReleaseMat'
/tmp/cc3sV7tb.o: In function `cvSubS':
camMove.c:(.text+0xd7b): undefined reference to `cvAddS'
/tmp/cc3sV7tb.o: In function `cvCloneSeq':
camMove.c:(.text+0xdc9): undefined reference to `cvSeqSlice'
/tmp/cc3sV7tb.o: In function `cvSetNew':
camMove.c:(.text+0xe27): undefined reference to `cvSetAdd'
/tmp/cc3sV7tb.o: In function `cvGetSetElem':
camMove.c:(.text+0xeba): undefined reference to `cvGetSeqElem'
/tmp/cc3sV7tb.o: In function `cvEllipseBox':
camMove.c:(.text+0xfbf): undefined reference to `cvEllipse'
/tmp/cc3sV7tb.o: In function `cvFont':
camMove.c:(.text+0x100d): undefined reference to `cvInitFont'
/tmp/cc3sV7tb.o: In function `cvReadIntByName':
camMove.c:(.text+0x10d5): undefined reference to `cvGetFileNodeByName'
/tmp/cc3sV7tb.o: In function `cvReadRealByName':
camMove.c:(.text+0x1185): undefined reference to `cvGetFileNodeByName'
/tmp/cc3sV7tb.o: In function `cvReadStringByName':
camMove.c:(.text+0x11f3): undefined reference to `cvGetFileNodeByName'
/tmp/cc3sV7tb.o: In function `cvReadByName':
camMove.c:(.text+0x1225): undefined reference to `cvGetFileNodeByName'
camMove.c:(.text+0x123d): undefined reference to `cvRead'
/tmp/cc3sV7tb.o: In function `cvCreateSubdivDelaunay2D':
camMove.c:(.text+0x1270): undefined reference to `cvCreateSubdiv2D'
camMove.c:(.text+0x129a): undefined reference to `cvInitSubdivDelaunay2D'
/tmp/cc3sV7tb.o: In function `cvCalcHist':
camMove.c:(.text+0x13a5): undefined reference to `cvCalcArrHist'
/tmp/cc3sV7tb.o: In function `cvMean':
camMove.c:(.text+0x1406): undefined reference to `cvAvg'
/tmp/cc3sV7tb.o: In function `cvSumPixels':
camMove.c:(.text+0x1426): undefined reference to `cvSum'
/tmp/cc3sV7tb.o: In function `cvMean_StdDev':
camMove.c:(.text+0x1454): undefined reference to `cvAvgSdv'
/tmp/cc3sV7tb.o: In function `cvmPerspectiveProject':
camMove.c:(.text+0x149a): undefined reference to `cvReshape'
camMove.c:(.text+0x14bc): undefined reference to `cvReshape'
camMove.c:(.text+0x14d5): undefined reference to `cvPerspectiveTransform'
/tmp/cc3sV7tb.o: In function `cvFillImage':
camMove.c:(.text+0x14f4): undefined reference to `cvGetElemType'
camMove.c:(.text+0x150a): undefined reference to `cvColorToScalar'
camMove.c:(.text+0x1558): undefined reference to `cvSet'
/tmp/cc3sV7tb.o: In function `cvRandSetRange':
camMove.c:(.text+0x15aa): undefined reference to `cvError'
camMove.c:(.text+0x15e6): undefined reference to `cvError'
/tmp/cc3sV7tb.o: In function `cvRandInit':
camMove.c:(.text+0x16b6): undefined reference to `cvError'
camMove.c:(.text+0x16f3): undefined reference to `cvError'
/tmp/cc3sV7tb.o: In function `cvRand':
camMove.c:(.text+0x178c): undefined reference to `cvError'
camMove.c:(.text+0x1823): undefined reference to `cvRandArr'
/tmp/cc3sV7tb.o: In function `cvbCartToPolar':
camMove.c:(.text+0x1971): undefined reference to `cvCartToPolar'
/tmp/cc3sV7tb.o: In function `cvbFastArctan':
camMove.c:(.text+0x1a2e): undefined reference to `cvCartToPolar'
/tmp/cc3sV7tb.o: In function `cvbSqrt':
camMove.c:(.text+0x1aae): undefined reference to `cvPow'
/tmp/cc3sV7tb.o: In function `cvbInvSqrt':
camMove.c:(.text+0x1b2e): undefined reference to `cvPow'
/tmp/cc3sV7tb.o: In function `cvbReciprocal':
camMove.c:(.text+0x1bae): undefined reference to `cvPow'
/tmp/cc3sV7tb.o: In function `cvbFastExp':
camMove.c:(.text+0x1c20): undefined reference to `cvExp'
/tmp/cc3sV7tb.o: In function `cvbFastLog':
camMove.c:(.text+0x1c92): undefined reference to `cvLog'
/tmp/cc3sV7tb.o: In function `cvContourBoundingRect':
camMove.c:(.text+0x1cb4): undefined reference to `cvBoundingRect'
/tmp/cc3sV7tb.o: In function `cvPseudoInverse':
camMove.c:(.text+0x1ce0): undefined reference to `cvInvert'
/tmp/cc3sV7tb.o: In function `cvConvexHull':
camMove.c:(.text+0x1d61): undefined reference to `cvConvexHull2'
/tmp/cc3sV7tb.o: In function `cvMinAreaRect':
camMove.c:(.text+0x1db7): undefined reference to `cvMinAreaRect2'
camMove.c:(.text+0x1de8): undefined reference to `cvBoxPoints'
/tmp/cc3sV7tb.o: In function `cvFitLine3D':
camMove.c:(.text+0x1ed5): undefined reference to `cvFitLine'
/tmp/cc3sV7tb.o: In function `cvFitLine2D':
camMove.c:(.text+0x1f7e): undefined reference to `cvFitLine'
/tmp/cc3sV7tb.o: In function `cvFitEllipse':
camMove.c:(.text+0x1fc8): undefined reference to `cvFitEllipse2'
/tmp/cc3sV7tb.o: In function `cvProject3D':
camMove.c:(.text+0x211a): undefined reference to `cvTransform'
/tmp/cc3sV7tb.o: In function `cvHoughLines':
camMove.c:(.text+0x21a1): undefined reference to `cvHoughLines2'
/tmp/cc3sV7tb.o: In function `cvHoughLinesP':
camMove.c:(.text+0x222f): undefined reference to `cvHoughLines2'
/tmp/cc3sV7tb.o: In function `cvHoughLinesSDiv':
camMove.c:(.text+0x22bd): undefined reference to `cvHoughLines2'
/tmp/cc3sV7tb.o: In function `cvFindFundamentalMatrix':
camMove.c:(.text+0x2317): undefined reference to `cvCreateMat'
camMove.c:(.text+0x2335): undefined reference to `cvCreateMat'
camMove.c:(.text+0x249b): undefined reference to `cvFindFundamentalMat'
camMove.c:(.text+0x24a6): undefined reference to `cvReleaseMat'
camMove.c:(.text+0x24b1): undefined reference to `cvReleaseMat'
/tmp/cc3sV7tb.o: In function `cvFindChessBoardCornerGuesses':
camMove.c:(.text+0x24e8): undefined reference to `cvFindChessboardCorners'
/tmp/cc3sV7tb.o: In function `cvCalibrateCamera':
camMove.c:(.text+0x2733): undefined reference to `cvCalibrateCamera2'
/tmp/cc3sV7tb.o: In function `cvCalibrateCamera_64d':
camMove.c:(.text+0x297e): undefined reference to `cvCalibrateCamera2'
/tmp/cc3sV7tb.o: In function `cvFindExtrinsicCameraParams':
camMove.c:(.text+0x2b37): undefined reference to `cvFindExtrinsicCameraParams2'
/tmp/cc3sV7tb.o: In function `cvFindExtrinsicCameraParams_64d':
camMove.c:(.text+0x2cea): undefined reference to `cvFindExtrinsicCameraParams2'
/tmp/cc3sV7tb.o: In function `cvRodrigues':
camMove.c:(.text+0x2d11): undefined reference to `cvRodrigues2'
camMove.c:(.text+0x2d2c): undefined reference to `cvRodrigues2'
/tmp/cc3sV7tb.o: In function `cvProjectPoints':
camMove.c:(.text+0x300b): undefined reference to `cvProjectPoints2'
/tmp/cc3sV7tb.o: In function `cvProjectPointsSimple':
camMove.c:(.text+0x3184): undefined reference to `cvProjectPoints2'
/tmp/cc3sV7tb.o: In function `cvUnDistortOnce':
camMove.c:(.text+0x3206): undefined reference to `cvUndistort2'
/tmp/cc3sV7tb.o: In function `cvUnDistortInit':
camMove.c:(.text+0x322f): undefined reference to `cvGetRawData'
/tmp/cc3sV7tb.o: In function `cvUnDistort':
camMove.c:(.text+0x3318): undefined reference to `cvGetRawData'
/tmp/cc3sV7tb.o: In function `cvCalcEMD':
camMove.c:(.text+0x343e): undefined reference to `cvCalcEMD2'
/tmp/cc3sV7tb.o: In function `cvKMeans':
camMove.c:(.text+0x346d): undefined reference to `cvCreateMat'
camMove.c:(.text+0x351e): undefined reference to `cvKMeans2'
camMove.c:(.text+0x3529): undefined reference to `cvReleaseMat'
/tmp/cc3sV7tb.o: In function `cvStartScanGraph':
camMove.c:(.text+0x3566): undefined reference to `cvError'
camMove.c:(.text+0x357f): undefined reference to `cvCreateGraphScanner'
camMove.c:(.text+0x35bb): undefined reference to `cvFree_'
/tmp/cc3sV7tb.o: In function `cvEndScanGraph':
camMove.c:(.text+0x35fc): undefined reference to `cvError'
camMove.c:(.text+0x3612): undefined reference to `cvAlloc'
camMove.c:(.text+0x364e): undefined reference to `cvReleaseGraphScanner'
/tmp/cc3sV7tb.o: In function `cvLineAA':
camMove.c:(.text+0x3688): undefined reference to `cvGetElemType'
camMove.c:(.text+0x369e): undefined reference to `cvColorToScalar'
camMove.c:(.text+0x3717): undefined reference to `cvLine'
/tmp/cc3sV7tb.o: In function `cvCircleAA':
camMove.c:(.text+0x3736): undefined reference to `cvGetElemType'
camMove.c:(.text+0x374c): undefined reference to `cvColorToScalar'
camMove.c:(.text+0x37be): undefined reference to `cvCircle'
/tmp/cc3sV7tb.o: In function `cvEllipseAA':
camMove.c:(.text+0x3804): undefined reference to `cvGetElemType'
camMove.c:(.text+0x381a): undefined reference to `cvColorToScalar'
camMove.c:(.text+0x38a8): undefined reference to `cvEllipse'
/tmp/cc3sV7tb.o: In function `cvPolyLineAA':
camMove.c:(.text+0x38c7): undefined reference to `cvGetElemType'
camMove.c:(.text+0x38dd): undefined reference to `cvColorToScalar'
camMove.c:(.text+0x3956): undefined reference to `cvPolyLine'
/tmp/cc3sV7tb.o: In function `calculMoyenneCouleurCercle2':
camMove.c:(.text+0x3c3b): undefined reference to `sqrt'
camMove.c:(.text+0x3cff): undefined reference to `sqrt'
/tmp/cc3sV7tb.o: In function `main':
camMove.c:(.text+0x3e9a): undefined reference to `cvCreateCameraCapture'
camMove.c:(.text+0x3ea8): undefined reference to `cvQueryFrame'
camMove.c:(.text+0x3ebc): undefined reference to `cvNamedWindow'
camMove.c:(.text+0x3edd): undefined reference to `cvQueryFrame'
camMove.c:(.text+0x3ef3): undefined reference to `cvShowImage'
camMove.c:(.text+0x3f37): undefined reference to `cvCreateImage'
camMove.c:(.text+0x3f54): undefined reference to `cvConvertImage'
camMove.c:(.text+0x3f60): undefined reference to `cvCreateMemStorage'
camMove.c:(.text+0x3fca): undefined reference to `cvHoughCircles'
camMove.c:(.text+0x402d): undefined reference to `cvGetSeqElem'
camMove.c:(.text+0x4099): undefined reference to `cvCvtColor'
camMove.c:(.text+0x40d6): undefined reference to `cvCvtColor'
camMove.c:(.text+0x40f4): undefined reference to `cvReleaseImage'
camMove.c:(.text+0x40ff): undefined reference to `cvReleaseMemStorage'
camMove.c:(.text+0x410b): undefined reference to `cvWaitKey'
collect2: ld a retourné 1 code d'état d'exécution

Il n'a pas l'air de reconnaitre opencv. Comment puis je savoir si celui ci est bien installé ?

Hors ligne

#4 Le 19/05/2009, à 14:32

doc212

Re : Opencv Compilation ?

maintenant que tu veux faire un exécutable, je crois qu'il faut remettre le --libs pour préciser les librairies qu'il doit lier ...

gcc `pkg-config --cflags --libs opencv` -o nomProgramme nomProgramme.c

Hors ligne

#5 Le 19/05/2009, à 14:51

Evanok

Re : Opencv Compilation ?

merci j'ai réussi a compiler.

Quand j'execute cette fois ci j'ai le message suivant :

error while loading shared libraries: libcxcore.so.1: cannot open shared object file: No such file or directory

Je suppose que j'ai besoin de cette librairie mais que je ne l'ai pas d'installé ? je vais voir si je peux la trouver et l'installer et reessayer a nouveau de lancer mon programme

edit : nada sur synaptic, mais vu le nom c'est pas une librairie de opencv ça... ?

edit2 : j'ai trouvé la bibliothèque libcxore.so sans le ".1" dans /usr/local/lib/ je comprends pas trop le soucis

Dernière modification par Evanok (Le 19/05/2009, à 14:59)

Hors ligne

#6 Le 19/05/2009, à 15:39

doc212

Re : Opencv Compilation ?

Alors perso je suis pas un crack en la matière hein donc je sais pas trop trop ...

Il me semble que le fichier libcxcore.so.1 vient dans le paquet libcv1 installé avec le paquet opencv

http://packages.ubuntu.com/intrepid/i38 … 1/filelist
http://packages.ubuntu.com/source/intrepid/opencv

Tu aurais peut-être dû l'installer en utilisant les dépots de paquets plutôt qu'en compilant la source à la main... (même si normalement j'vois pas bien pourquoi ça poserait problème ...)

Hors ligne

#7 Le 19/05/2009, à 23:11

Evanok

Re : Opencv Compilation ?

hum exuse moi mais je suis vraiment débutant avec ubuntu niveau systeme. J'ai téléchargé pour voir la librairie libcv1, je l'ai decompressé, j'obtiens un binary, un data compressé et un autre fichier compressé, quand je les décompress j'obtiens des dossiers. Qu'est ce que je fais de tout ça ? il y a aucun makefile ou configure ? Je dois les copier quelquepart ? utiliser le binary pour l'installer ?

Hors ligne

#8 Le 19/05/2009, à 23:37

doc212

Re : Opencv Compilation ?

ok euh moi je pensais plutot à installer la librairie via synaptic ... ou en ligne de commande :

sudo apt-get install libcv1

Hors ligne

#9 Le 20/05/2009, à 08:19

Evanok

Re : Opencv Compilation ?

c'est vraiment la lutteeeee...

OpenCV ERROR: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support)
	in function cvNamedWindow, window.cpp(71)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...
	called from cvUnregisterType, cxpersistence.cpp(4933)
Terminating the application...

Voila ce qu'il me met cette fois comme magnifique présent, lorsque j'essaye d'executer, je vais voir si je peux pas trouver une autre ligne de compilation pour voir...

edit : après recherche, apperemment pour résoudre le problème il faut désinstaller opencv et installer la librairie libgtk2.0-dev. Ce qui est assez drole puisqu'en plus je l'ai installé hier en ayant besoin pour des fonctions gerant la souris sous ubuntu....

Je vais recommencer ce soir on verra ce que ça donne.... la patience est une vertue.. tongue

Arthur.

Dernière modification par Evanok (Le 20/05/2009, à 08:27)

Hors ligne

#10 Le 20/05/2009, à 14:32

Evanok

Re : Opencv Compilation ?

euh petite question... oui encore.

Comment savoir si une bibliothèque est installé et correctement ? je parle de bibliothèque en general. Je dois regarder quelquepart dans l'arborescence si j'ai un dossier qui porte le nom de ma bibliothèque ?

Car la par exemple la solution pour mon problème semble d'installer la libgtk2.0-dev et justement j'avais eu quelques soucis pour l'installer. Quand j'avais essayer il me parlait qu'il fallait avant une autre version de gtk comme si j'avais seulement telecharger une mise a jour.

Bref j'ai fais :

sudo apt-get install libgtk1.2-dev

puis ( et la je suis plus sure de me rappeler si je l'ai fais et je souviens même plus si ça avait fonctionné.. j'ai une mémoire de poisson rouge ).

 sudo apt-get install libgtk2.0-dev

Bref comment savoir si j'ai bien installer libgtk2.0-dev et qu'est ce que cela fait si j'essaye de l'installer alors que c'est deja fait cela écrase l'ancienne installation et ce n'est donc pas grave ?

Tu dois me trouver  prudent mais je préfère demander histoire de pas faire de bêtise ou de truc crade.

Hors ligne

#11 Le 23/05/2009, à 15:11

doc212

Re : Opencv Compilation ?

Ben en fait quand t'installe un paquet par synaptic, apt-get ou fichier .deb que t'as téléchargé manuellement en utilisant dpkg, ça met à jour une base de données qui reprend les paquets qui sont installés ...

Pour voir les paquets qui sont installés, tu peux aller dans synaptic et ils sont marqués en vert ... sinon tu peux taper dpkg -l (c'est un L ) dans un terminal et ça affichera une liste de tous les paquets installés ... mais bon la liste risque d'être longue ... du coup tu peux utiliser aussi la commande grep qui te permettra de filtrer la liste à la recherche d'un motif particulier ... par exemple pour voir si libgtk2.0-dev est installé tu peux faire

dpkg -l | grep libgtk


Si tu essaies de réinstaller un paquet déjà installé, le système va comparer les versions des paquets pour garder que la version la plus récente ...

Par contre, si tu installes des librairies ou des programmes "à la main" en téléchargeant les sources et en les compilant ... typiquement en faisant des ./configure, make et make install, ça va t'installer des trucs sans mettre à jour la base de données et là tu risque parfois d'avoir des problèmes si tu fais pas les choses proprement ... Il existe un programme qui s'appelle checkinstall qui te permet d'installer des trucs à partir des sources, après les avoir compilé de manière propre ... mais ça marche pas toujours...

Maintenant je ne sais pas comment ça fonctionne exactement tout ça ... mais c'est l'idée en gros ...

Donc en résumé, c'est toujours plus propre d'utiliser synaptic ou apt-get ou dpkg (ou aptitude). Si tu dois absolument installer des trucs à partir de leurs sources, essaie de faire checkinstall au lieu de make install, si ça marche tant mieux, ça mettra à jour la base de données des paquets installés, sinon tant pis fais make install, ça marchera quand même mais ce sera moins propre si jamais tu veux désinstaller par la suite ...

Pour afficher la liste des paquets installés : dans synaptic les paquets sont marqués en vert ou avec dpkg -l et regardé les paquets qui sont marqués comme installés ...

Voilà j'espère que c'était clair ... smile

Hors ligne

#12 Le 23/05/2009, à 15:26

Evanok

Re : Opencv Compilation ?

très clair merci pour tes éclairssissements. Sinon j'ai enfin réussi a installé opencv et ça compile.. sauf je viens de voir sur des forum que ma webcam est pas compatible avec ubuntu dommage pour moi héhé.

Je suis bon pour en trouver une autre pour travailler.

Hors ligne

#13 Le 29/10/2016, à 11:36

mycine

Re : Opencv Compilation ?

bjr quelqu’un peut m'aider dans l'installation de opencv svvvvvvvp

Hors ligne

#14 Le 29/10/2016, à 12:42

lann

Re : Opencv Compilation ?

Pour installer :

sudo apt-get install libopencv-dev  libcv-dev

Hors ligne