La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction à OpenCV GEL – Design III Charles du Tremblay

Présentations similaires


Présentation au sujet: "Introduction à OpenCV GEL – Design III Charles du Tremblay"— Transcription de la présentation:

1 Introduction à OpenCV GEL – 21405 Design III Charles du Tremblay

2 Plan Pourquoi OpenCV? Qu’est-ce qu’OpenCV? Structure de l’image IPL
Fonctionnalités offertes Exemples d’utilisation

3 Pourquoi OpenCV? Une grande part de vos résultats dépendent de la vision. Fournit un lien entre la caméra et votre application (IA). Offre des outils pour traiter vos images et faciliter la reconnaissance du terrain.

4 Qu’est-ce qu’OpenCV? OpenCV: Open Source Computer Vision Library
OpenCV vise: La vision numérique en temps réel La segmentation, reconnaissance et identification d’objets OpenCV offre: Une collection d’algorithmes Des exemples de codes

5 Qu’est-ce qu’OpenCV OpenCV est bâtit sur IPL (Intel Image Processing Library): Même format d’image (IPL image) La plupart des fonctions sont compatibles Différences: Fonctions exclusives Quelques fonctions incompatibles OpenCV: utilisation partielle du format IPL image

6 Structure de l’image IPL
IplImage : nSize sizeof(IplImage) (int) nChannels Nb. de canaux (1-4 en OpenCV) (int) depth Bits par pixels (int) width Largeur de l’image en pixels (int) height Hauteur de l’image en pixels (int) roi Region Of Interest (_IplROI*) maskROI1 Masque (_IplImage*) alphaChannel2 Canal alpha (int) colorModel2 Espace couleur utilisé (char[4]) BorderMode2 Mode de détection de contour (int[4]) […] 1 Doit être NULL pour les fonctions OpenCV 2 Non supporté ou ignoré par OpenCV. Utile pour IPL.

7 Fonctionnalités offertes
Création, allocation & destruction d’images Détection de contours Conversion d’espace couleur Analyse de contour Soustraction d’arrière-plan Détection de régions Pyramides d’images Opération morphologiques (érosion, dilatation, etc.) Seuillage […]

8 Création, allocation & destruction d’images
Lier une caméra Fonction: cvCaptureFromCAM(int index) Retourne un objet CvCapture* qui définit votre caméra L’index importe peu pour une seule caméra Prendre une image Fonction: cvGrabFrame(CvCapture* camera) Demande à la caméra de capturer une image Fonction: cvRetrieveFrame(CvCapture* camera) Retourne une image IPL (IplImage*) Le format par défaut est BRG 8-bits

9 Création, allocation & destruction d’images
Créer une image vide Fonction: cvCreateImage(CvSize size, int depth, int channels) Retourne une image IPL (IplImage*) remplie de 0. Libérer la mémoire Fonction: cvReleaseImage(&IplImage img) Pour libérer l’espace mémoire prise par une image. Fonction: cvReleaseCapture(&CvCapture camera) Pour libérer la caméra.

10 Conversion d’espace couleur
Pour OpenCV: Espaces couleurs: RGB (BRG, RBG, etc.) HSV YCRCB CIE XYZ Fonction: cvCvtColor(&imgSrc, &imgDest, code) CIE Lab Bayer Greyscale Attention à l’ordre des composantes RGB dans les images que vous traitez! Par défaut, vos images sont capturées en BRG et non en RGB.

11 Seuillage Permet une première identification des points d’intérêts.
Garde les pixels de la couleur de l’objet recherché Image originale Seuil sur RGB : blanc Seuil sur HSV : rouge

12 Exemple d’application
Trouver un objet rouge dans une image: Initialiser la caméra et les images. Convertir l’espace couleur. Parcourir l’image HSV et vérifier les pixels par rapport aux seuils fixés. Détruire l’image et libérer la mémoire.

13 Exemple d’application
Initialiser la caméra et les images //Définir une caméra CvCapture* camera = cvCaptureFromCAM( -1 ); //Capturer une image cvGrabFrame( camera ); //Aller chercher l’image sous format IplImage IplImage* brgFrame = cvRetrieveFrame( camera ); //Copies de l’image pour les transformations… IplImage* seuilFrame = cvCreateImage( cvGetSize(brgFrame), IPL_DEPTH_8U , 1 ); IplImage* hsvFrame = cvCreateImage( cvGetSize(brgFrame), IPL_DEPTH_8U, 3 );

14 Exemple d’application
Convertir l’espace couleur //Conversion BGR -> HSV cvCvtColor( brgFrame, hsvFrame, CV_BGR2HSV ); //Retourne l’image par rapport à X si nécessaire cvFlip( hsvFrame, NULL, 0); //0 = axe X

15 Exemple d’application
Parcourir l’image HSV et vérifier les seuils //Pour chaque pixel… for(int y = 0; y < (cvGetSize(hsvFrame).height); y++) { for(int x = 0; x < (cvGetSize(hsvFrame).width); x++) //…si HSV entre les seuils max et min… if( //test minH (=0) ((hsvFrame->imageData + hsvFrame->widthStep*y))[x*3] > 0 && //test maxH (=50) ((hsvFrame->imageData + hsvFrame->widthStep*y))[x*3] < 50 &&

16 Pourquoi « [x*3+k]… Donc… k=0 pour H k=1 pour S k=2 pour V

17 Exemple d’application
Parcourir l’image HSV et vérifier les seuils (suite) //test minS (=100) (hsvFrame->imageData + hsvFrame->widthStep*y)[(x*3)+1] >100 ) //…placer un point blanc dans l’image « seuils ». ( seuilFrame->imageData + seuilFrame->widthStep*y)[x] = 255; //Sinon, placer un point noir. else ( seuilFrame->imageData + seuilFrame->widthStep*y)[x] = 0; } } //fin des boucles

18 Exemple d’application
Détruire l’image et libérer la mémoire […suite des opérations sur l’image…] //Libérer l’espace des images cvReleaseImage( &brgFrame ); cvReleaseImage( &hsvFrame ); cvReleaseImage( &seuilFrame ); //Libérer la caméra cvReleaseCapture( &camera );

19 Bon Travail! Références:
Intel Image Processing Library Reference Manual OpenCV Reference Manual


Télécharger ppt "Introduction à OpenCV GEL – Design III Charles du Tremblay"

Présentations similaires


Annonces Google