Table des matières

,

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.

Installation

Il suffit d'installer le paquet libopencv-dev.

Webcams testées et compatibles

.

Autres caméras

Caméras à la norme PAL

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. 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 :

#define DEFAULT_V4L_WIDTH  704
#define DEFAULT_V4L_HEIGHT 576
           selectedChannel.norm = VIDEO_MODE_PAL;

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

make -j 2
sudo make install
sudo ldconfig

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

Pour exécuter :

./exemple

Voilà, c'est tout…

Liens utiles


Contributeurs : Julien Bossut Myrkvid, damien200, volfoni54

1)
Pour Open Computer Vision