Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
opencv [Le 01/01/2010, 10:40] damien200 |
opencv [Le 01/03/2023, 20:56] (Version actuelle) L'Africain |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Intrepid programmation}} | + | {{tag>Jammy programmation}} |
---- | ---- | ||
- | |||
====== OpenCV ====== | ====== OpenCV ====== | ||
- | * OpenCV [[http://www.intel.com/technology/computing/opencv/index.htm]] est une bibliothèque d'analyse d'images et de vision par ordinateur, en langage C/C++, proposée par Intel. | + | OpenCV(( Pour Open Computer Vision)) est une bibliothèque libre d'analyse d'images et de vision par ordinateur sous licence BSD en langage C/C++. Elle a été développée à l'origine par Intel. |
- | ====== Installation ====== | ||
- | Il existe différentes façon d'obtenir OpenCV: soit par la méthode Gestionnaire de paquets Synaptic, soit par la méthode manuelle en téléchargeant directement l'archive depuis le site [[http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16948|sourceforge d'OpenCV]] | ||
- | Ici sera présentée la seconde solution. | + | ===== Installation ===== |
- | Installez les dépendances nécessaires (valable sur Intrepid): | + | Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] [[apt>libopencv-dev]]. |
- | <code>sudo aptitude install build-essential gcc cmake subversion libgtk2.0-0-dev pkg-config libpng-dev libjpeg-dev libtiff-dev libjasper-dev python-dev swig1.3 libavformat-dev libdc1394-22-dev libgtk2.0-dev</code> | + | |
- | + | ||
- | * CMake 2.6 or higher | + | |
- | * Subversion (SVN) client | + | |
- | * GTK+ 2.x or higher, including headers (e.g. libgtk2.0-dev) | + | |
- | * pkgconfig | + | |
- | * libpng, zlib, libjpeg, libtiff, libjasper with development files (e.g. libjpeg-dev) | + | |
- | * Python 2.3 or later with developer packages (e.g. python-dev) | + | |
- | * SWIG 1.3.30 or later | + | |
- | * libavcodec etc. from ffmpeg 0.4.9-pre1 or later + headers. | + | |
- | Décompressez l'archive d'OpenCV que vous avez téléchargé dans un répertoire de travail. | ||
- | Puis faîtes : | ||
- | <code>./configure | ||
- | make | ||
- | #Optionnel make check | ||
- | make install</code> | ||
- | FIXME (j'ai une erreur quand je fais ce qui est marqué sous karmic.) \\ \\ | + | ==== Webcams testées et compatibles ==== |
- | Si vous avez des erreurs lors du make install, vérifiez si vous avez les droits d'administrateur pour écrire dans les répertoires d'installation. Si vous ne les avez pas, faîtes simplement un sudo make install. | + | |
+ | * Logitech QuickCam pro 4000 | ||
+ | * Logitech QuickCam pro 9000 | ||
+ | * Hercules Webcam Dualpix HD (600*480 : ne fonctionne pas en mode HD dans openCV) | ||
+ | * Logitech C930e | ||
+ | . | ||
- | Il est possible que vous rencontriez cette erreur plus tard : | + | ===== Autres caméras ===== |
- | <code>OpenCV ERROR: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support) | + | ==== Caméras à la norme PAL ==== |
- | in function cvNamedWindow</code> | + | |
- | Dans ce cas, désinstallez OpenCV. | + | Les caméras de ce type sont analogiques. Le signal de sortie est à la norme CCIR et elles s’interfacent avec une carte PCI -- ou autre -- que l'on peut trouver sur internet pour quelques euros (vous aurez plus cher de frais de transport que de carte...). Malheureusement, elle ne fonctionnent pas directement sous OpenCV. Vous pouvez vous en rendre compte en créant un programme minimum d'acquisition. Si cette dernière est très (très) lente et que l'image créée est déformée, il y a de fortes chances que votre caméra ne soit pas à la norme par défaut (NTSC, je crois). Vous pouvez aussi vérifier la norme utilisée avec [[:tvtime|tvtime]]. Ce logiciel permet de configurer facilement la norme du codage (NTSC, PAL, SECAM, etc.). |
- | Placez vous dans le répertoire où vous avez fait vos commandes d'installation | + | |
- | <code>make uninstall</code> | + | |
- | Ensuite : | + | |
- | <code>sudo apt-get install libgtk2.0-dev</code> | + | |
- | et suivez la procédure d'installation habituelle. | + | |
- | ====== Compatibilité Webcam ====== | + | Pour avoir la norme PAL, il faut recompiler OpenCV. Voici comment procéder : |
+ | * Suivez la précédure décrite au paragraphe [[Opencv#Par compilation|Par compilation]] | ||
+ | * Modifiez les lignes 231/232 du fichier '''cvcap_v4l.cpp'' qui se trouve dans ''OpenCV-2.0.0/src/highgui'' : | ||
+ | <code> | ||
+ | #define DEFAULT_V4L_WIDTH 704 | ||
+ | #define DEFAULT_V4L_HEIGHT 576 | ||
+ | </code> | ||
+ | * Décommentez la ligne 1041 et modifiez la ainsi : | ||
+ | <code> | ||
+ | selectedChannel.norm = VIDEO_MODE_PAL; | ||
+ | </code> | ||
- | Il existe un certain nombre de webcam non compatibles avec Opencv. Voici une technique permettant de rendre compatible sous Intrepid (Non testé avec les versions supérieures) votre webcam à partir du moment ou elle fonctionne sous Ubuntu (avec un programme tel que Cheese) | + | Voilà, recompilez ensuite OpenCV. Positionnez vous dans le répertoire opencv.build puis : |
- | Commencez par télécharger une version spéciale d'Opencv (malheureusement il s'agit de la version 1.0, la version 1.1pre n'est pas disponible) [[http://github.com/nzjrs/opencv/tree/master|sur ce site]] | + | <code> |
+ | make -j 2 | ||
+ | sudo make install | ||
+ | sudo ldconfig | ||
+ | </code> | ||
- | Décompressez l'archive d'OpenCV que vous avez téléchargé dans un répertoire de travail. | + | |
- | Puis faîtes : | + | ===== Exemple d'utilisation ===== |
- | <code>./configure | + | Ecrivez le code ''ex_opencv.cpp'' suivant : |
+ | <code> | ||
+ | #include <stdio.h> // Pour le printf()... | ||
+ | |||
+ | /* Les deux bibliothèques nécessaires d'opencv : | ||
+ | - cv.h contient les structures et fonctions de manipulation d'images | ||
+ | - highgui.h contient les fonctions d'affichage des images | ||
+ | */ | ||
+ | #include <cv.h> | ||
+ | #include <highgui.h> | ||
+ | |||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | /* On initialise la 'capture' depuis la WebCam, une adresse, | ||
+ | représentative de la ressource est retournée | ||
+ | */ | ||
+ | CvCapture* capture = cvCaptureFromCAM(-1); | ||
+ | if(capture) // Si la caméra est reconnu | ||
+ | { | ||
+ | if(!cvGrabFrame(capture)) // On prend une image et une seule ! | ||
+ | { | ||
+ | printf("Could not grab a frame\n\7"); // Si la prise d'image n'est pas possible, on sort ! | ||
+ | exit(0); | ||
+ | } | ||
+ | } | ||
+ | else // Si la caméra n'est pas reconnu ou si elle n'existe pas, on sort... | ||
+ | { | ||
+ | printf("Could not open video device\n"); | ||
+ | exit(0); | ||
+ | } | ||
+ | IplImage *img=cvRetrieveFrame(capture); // On rapatrie l'image que l'on 'stocke' dans img avec ses propriétés. | ||
+ | |||
+ | printf("L'image fait %dx%d pixels et possède %d canaux (couleurs)\n",img->width,img->height,img->nChannels); | ||
+ | |||
+ | // On crée une fenètre dans laquelle on affichera l'image | ||
+ | cvNamedWindow("Fenetre_test", CV_WINDOW_AUTOSIZE); | ||
+ | |||
+ | // C'est ce que l'on fait ici : | ||
+ | cvShowImage("Fenetre_test", img ); | ||
+ | |||
+ | // Appuyez sur une touche pour sortir | ||
+ | cvWaitKey(0); | ||
+ | |||
+ | // On libère ensuite, la mémoire de l'image et de la ressource | ||
+ | cvReleaseImage(&img ); | ||
+ | cvReleaseCapture(&capture); | ||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Créez aussi le fichier ''Makefile'' suivant : | ||
+ | |||
+ | <code> | ||
+ | all: | ||
+ | g++ -O2 -Wall -o exemple ex_opencv.cpp `pkg-config --cflags --libs opencv` | ||
+ | clean: | ||
+ | rm -rf exemple | ||
+ | </code> | ||
+ | |||
+ | Pour compiler : | ||
+ | <code> | ||
make | make | ||
- | make install</code> | + | </code> |
- | Vous pouvez compiler votre programme comme d'habitude. | + | Pour exécuter : |
- | Pour exécuter le programme, faites: | + | |
<code> | <code> | ||
- | LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so ./example | + | ./exemple |
</code> | </code> | ||
- | ====== Liens utiles ====== | + | Voilà, c'est tout... |
- | * OpenCV @ Intel [[http://www.intel.com/technology/computing/opencv/index.htm]] | + | |
- | * OpenCV @ Sourceforge [[http://sourceforge.net/projects/opencvlibrary/]] | + | ===== Liens utiles ===== |
- | * OpenCV @ WillowGarage (wiki) [[http://opencv.willowgarage.com/wiki/]] | + | |
+ | * **(en)** [[https://sourceforge.net/projects/opencvlibrary/|OpenCV @ Sourceforge]] | ||
+ | * **(en)** [[http://opencv.willowgarage.com/wiki/|OpenCV @ WillowGarage (wiki)]] | ||
Ligne 73: | Ligne 127: | ||
---- | ---- | ||
- | //Contributeur : [[utilisateurs:Myrkvid]].// | + | //Contributeurs : [[utilisateurs:Julien Bossut]] [[utilisateurs:Myrkvid]], [[utilisateurs:damien200]], [[utilisateurs:volfoni54]]// |