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 09/07/2010, 08:29] volfoni54 |
opencv [Le 01/03/2023, 20:56] (Version actuelle) L'Africain |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Karmic Lucid programmation BROUILLON}} | + | {{tag>Jammy programmation}} |
---- | ---- | ||
Ligne 6: | Ligne 6: | ||
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. | 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. | ||
- | ===== Pré-requis ===== | ||
- | * Avoir les [[:sudo|droits d'administration]] | ||
+ | ===== Installation ===== | ||
+ | Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] [[apt>libopencv-dev]]. | ||
- | ===== Installation ===== | ||
- | ====via les dépôts officiels==== | + | ==== Webcams testées et compatibles ==== |
- | Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer les paquets]]: [[apt://libcv1|libcv1]] (ou [[apt://libcv4|libcv4]] depuis [[lucid|Ubuntu 10.04 LTS]]) et [[apt://libcv-dev|libcv-dev]]. | + | * Logitech QuickCam pro 4000 |
+ | * Logitech QuickCam pro 9000 | ||
+ | * Hercules Webcam Dualpix HD (600*480 : ne fonctionne pas en mode HD dans openCV) | ||
+ | * Logitech C930e | ||
+ | . | ||
- | ====par compilation==== | + | ===== Autres caméras ===== |
+ | ==== Caméras à la norme PAL ==== | ||
- | ===Dépendances=== | + | 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.). |
- | FIXME valable sur Intrepid, à mettre a jour pour que ce soit indépendant des versions | + | 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]] | |
- | * [[apt://cmake|CMake]] 2.6 ou supérieur | + | * Modifiez les lignes 231/232 du fichier '''cvcap_v4l.cpp'' qui se trouve dans ''OpenCV-2.0.0/src/highgui'' : |
- | * [[apt://subversion|Subversion]] (SVN) client | + | <code> |
- | * GTK+ 2.x or higher, including headers (e.g. [[apt://libgtk2.0-dev|libgtk2.0-dev]]) | + | #define DEFAULT_V4L_WIDTH 704 |
- | * [[apt://pkg-config|pkg-config]] | + | #define DEFAULT_V4L_HEIGHT 576 |
- | * [[apt://libpng12-dev|libpng]], [[apt://zlib1g-dev|zlib]], [[apt://libjpeg62-dev|libjpeg]], [[apt://libtiff4-dev|libtiff]] et [[apt://libjasper-dev|libjasper]] with development files. | + | </code> |
- | * [[apt://python-dev|Python]] 2.3 or later with developer packages (e.g. python-dev) | + | * Décommentez la ligne 1041 et modifiez la ainsi : |
- | * [[apt://swig1.3|SWIG]] 1.3.30 or later | + | <code> |
- | * [[apt://libavcodec-dev|libavcodec]] etc. from [[apt://ffmpeg|ffmpeg]] 0.4.9-pre1 or later + headers. | + | selectedChannel.norm = VIDEO_MODE_PAL; |
- | + | </code> | |
- | Installez les dépendances nécessaires : | + | |
- | <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> | + | |
- | + | ||
- | + | ||
- | === Compiler les sources pour Karmic === | + | |
- | + | ||
- | + | ||
- | Ouvrez un [[terminal]] et tapez: | + | |
+ | Voilà, recompilez ensuite OpenCV. Positionnez vous dans le répertoire opencv.build puis : | ||
<code> | <code> | ||
- | # On se place dans le dossier personnel (par exemple) | ||
- | cd | ||
- | |||
- | # On télécharge les sources de OpenCV sur sourceforge | ||
- | wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.0/OpenCV-2.0.0.tar.bz2/download | ||
- | |||
- | # On désarchive le dossier | ||
- | tar -xjf OpenCV-2.0.0.tar.bz2 | ||
- | |||
- | # On efface l'archive, on crée un dossier build et on va dedans | ||
- | rm -r OpenCV-2.0.0.tar.bz2 | ||
- | mkdir opencv.build | ||
- | cd opencv.build | ||
- | |||
- | # Et on installe | ||
- | cmake ../OpenCV-2.0.0 | ||
make -j 2 | make -j 2 | ||
sudo make install | sudo make install | ||
Ligne 64: | Ligne 45: | ||
</code> | </code> | ||
- | === Méthode manuelle (vétuste?)=== | ||
- | Télécharger directement l'archive depuis le site [[http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16948|sourceforge d'OpenCV]]. | + | ===== Exemple d'utilisation ===== |
+ | Ecrivez le code ''ex_opencv.cpp'' suivant : | ||
+ | <code> | ||
+ | #include <stdio.h> // Pour le printf()... | ||
- | Décompressez l'archive d'OpenCV que vous avez téléchargé dans un répertoire de travail. | + | /* Les deux bibliothèques nécessaires d'opencv : |
- | Puis faites : | + | - cv.h contient les structures et fonctions de manipulation d'images |
- | <code>./configure | + | - highgui.h contient les fonctions d'affichage des images |
- | make | + | */ |
- | #Optionnel make check | + | #include <cv.h> |
- | make install</code> | + | #include <highgui.h> |
- | 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. | + | 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. | ||
- | Il est possible que vous rencontriez cette erreur plus tard : | + | printf("L'image fait %dx%d pixels et possède %d canaux (couleurs)\n",img->width,img->height,img->nChannels); |
- | <code>OpenCV ERROR: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support) | + | |
- | in function cvNamedWindow</code> | + | |
- | Dans ce cas, désinstallez OpenCV. | + | // On crée une fenètre dans laquelle on affichera l'image |
- | Placez vous dans le répertoire où vous avez fait vos commandes d'installation | + | cvNamedWindow("Fenetre_test", CV_WINDOW_AUTOSIZE); |
- | <code>make uninstall</code> | + | |
- | Ensuite : | + | |
- | <code>sudo apt-get install libgtk2.0-dev</code> | + | |
- | et suivez la procédure d'installation habituelle. | + | |
- | ===== Compatibilité Webcams ===== | + | // C'est ce que l'on fait ici : |
+ | cvShowImage("Fenetre_test", img ); | ||
- | 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 où elle fonctionne sous Ubuntu (avec un programme tel que [[:cheese|Cheese]]). | + | // Appuyez sur une touche pour sortir |
- | 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]] | + | cvWaitKey(0); |
- | Décompressez l'archive d'OpenCV que vous avez téléchargé dans un répertoire de travail. | + | // On libère ensuite, la mémoire de l'image et de la ressource |
- | Puis faîtes : | + | cvReleaseImage(&img ); |
- | <code>./configure | + | cvReleaseCapture(&capture); |
- | make | + | return 0; |
- | make install</code> | + | } |
- | + | ||
- | Vous pouvez compiler votre programme comme d'habitude. | + | |
- | Pour exécuter le programme, faites: | + | |
- | <code> | + | |
- | LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so ./example | + | |
</code> | </code> | ||
- | ==== Webcams testées et compatibles ==== | + | Créez aussi le fichier ''Makefile'' suivant : |
- | * Logitech QuickCam pro 4000 | ||
- | |||
- | ==== Webcams testées et non compatibles ==== | ||
- | |||
- | * Aucunes (pour le moment) | ||
- | |||
- | |||
- | ===== Autres caméras ===== | ||
- | ==== Caméras à la norme PAL ==== | ||
- | |||
- | Les caméras de ce type, ne fonctionnent pas directement sous OpenCV. Vous pouvez vous en rendre compte en créant un programme minimum d'acquisition. Si celle-ci 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 en utilisant [[http://doc.ubuntu-fr.org/tvtime|tvtime]]. Ce logiciel permet de configurer facilement la norme d'acquisition (NTSC, PAL, SECAM, etc.). | ||
- | |||
- | Pour avoir la norme PAL, il faut recompiler OpenCV. Voici comment procéder | ||
- | - Suivez la précédure décrite au paragraphe ''Par compilation'' | ||
- | - Modifiez le fichier '''cvcap_v4l.cpp'' qui se trouvez dans ''OpenCV-2.0.0/src/highgui'' aux lignes 231/232 : | ||
<code> | <code> | ||
- | #define DEFAULT_V4L_WIDTH 704 | + | all: |
- | #define DEFAULT_V4L_HEIGHT 576 | + | g++ -O2 -Wall -o exemple ex_opencv.cpp `pkg-config --cflags --libs opencv` |
+ | clean: | ||
+ | rm -rf exemple | ||
</code> | </code> | ||
- | - Décommentez la ligne 1041 et modifiez la ainsi : | + | |
+ | Pour compiler : | ||
<code> | <code> | ||
- | selectedChannel.norm = VIDEO_MODE_PAL; | + | make |
</code> | </code> | ||
- | Voilà, recompiler ensuite OpenCV. Positionnez vous dans le répertoire opencv.build puis : | + | Pour exécuter : |
<code> | <code> | ||
- | make -j 2 | + | ./exemple |
- | sudo make install | + | |
- | sudo ldconfig | + | |
</code> | </code> | ||
- | À noter : | + | Voilà, c'est tout... |
- | - Je ne n'ai pas réussi à compiler OpenCV 2.1 sous Ubuntu Lucid. | + | |
- | - Je ne crois pas que l'on puisse utiliser 2 caméras de normes différentes (à confirmer) | + | |
- | - Je n'ai pas de caméra SECAM sous la main, mais je pense que la procédure est la même... | + | |
- | + | ||
===== Liens utiles ===== | ===== Liens utiles ===== | ||
- | * **(en)** [[http://sourceforge.net/projects/opencvlibrary/|OpenCV @ Sourceforge]] | + | * **(en)** [[https://sourceforge.net/projects/opencvlibrary/|OpenCV @ Sourceforge]] |
- | * **(en)** [[http://opencv.willowgarage.com/wiki/|OpenCV @ WillowGarage (wiki)]] | + | * **(en)** [[http://opencv.willowgarage.com/wiki/|OpenCV @ WillowGarage (wiki)]] |
Ligne 154: | Ligne 127: | ||
---- | ---- | ||
- | //Contributeurs : [[utilisateurs:Myrkvid]], [[utilisateurs:damien200]]// | + | //Contributeurs : [[utilisateurs:Julien Bossut]] [[utilisateurs:Myrkvid]], [[utilisateurs:damien200]], [[utilisateurs:volfoni54]]// |