Ceci est une ancienne révision du document !



OpenCV

OpenCV1) 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.

via les dépôts officiels

Par compilation

Dépendances

FIXME valable sur Intrepid, à mettre a jour pour que ce soit indépendant des versions

Installez les dépendances nécessaires :

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

Compiler les sources pour Karmic

Ouvrez un terminal et tapez:

# 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
sudo make install
sudo ldconfig

Méthode manuelle (vétuste?)

Télécharger directement l'archive depuis le site sourceforge d'OpenCV.

Décompressez l'archive d'OpenCV que vous avez téléchargé dans un répertoire de travail. Puis faites :

./configure
make
#Optionnel make check
make install

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.

Il est possible que vous rencontriez cette erreur plus tard :

OpenCV ERROR: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support)
         in function cvNamedWindow

Dans ce cas, désinstallez OpenCV. Placez vous dans le répertoire où vous avez fait vos commandes d'installation

make uninstall

Ensuite :

sudo apt-get install libgtk2.0-dev

et suivez la procédure d'installation habituelle.

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). 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) sur ce site

Décompressez l'archive d'OpenCV que vous avez téléchargé dans un répertoire de travail. Puis faîtes :

./configure
make
make install

Vous pouvez compiler votre programme comme d'habitude. Pour exécuter le programme, faites:

 LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so ./example

Webcams testées et compatibles

  • Logitech QuickCam pro 4000
  • Logitech QuickCam pro 9000

Webcams testées et non compatibles

  • Aucunes (pour le moment)

Caméras à la norme PAL

Les caméras de ce type sont analogique. Le signal de sortie est à la norme CCIR et elles s'interfaçent avec une carte PCI – ou autre – que l'on peut trouver sur internet pour quelques euros (vous aurez plus cher de port 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. Ce logiciel permet de configurer facilement la norme du codage (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 :
#define DEFAULT_V4L_WIDTH  704
#define DEFAULT_V4L_HEIGHT 576
  • Décommentez la ligne 1041 et modifiez la ainsi :
           selectedChannel.norm = VIDEO_MODE_PAL;

Voilà, recompiler ensuite OpenCV. Positionnez vous dans le répertoire opencv.build puis :

make -j 2
sudo make install
sudo ldconfig

À noter :

  1. Je ne n'ai pas réussi à compiler OpenCV 2.1 sous Ubuntu Lucid.
  2. Je ne crois pas que l'on puisse utiliser 2 caméras de normes différentes (à confirmer)
  3. Je n'ai pas de caméra SECAM sous la main, mais je pense que la procédure est la même…

Exemple d'utilisation

Ecrivez le code ex_opencv.cpp suivant :

#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;
}

Créez aussi le fichier Makefile suivant :

all:
	g++ -O2 -Wall -o exemple ex_opencv.cpp `pkg-config --cflags --libs opencv`
clean:
	rm -rf exemple

Pour compiler :

make

Voilà, c'est tout…


1)
Pour Open Computer Vision
  • opencv.1278666801.txt.gz
  • Dernière modification: Le 09/07/2010, 11:13
  • par volfoni54