1 / 37

OpenCV: Introduction au Traitement d ’ Images et Vid é o

OpenCV: Introduction au Traitement d ’ Images et Vid é o. Fran ç ois Meunier DMI. Contenu. Librairies de OpenCV Ouverture et lecture d’Images avec OpenCV Ouverture et lecture de vidéo avec OpenCV Gestion des événements (souris, track bar)

toya
Télécharger la présentation

OpenCV: Introduction au Traitement d ’ Images et Vid é o

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenCV: Introduction au Traitement d’Images et Vidéo François Meunier DMI

  2. Contenu • Librairies de OpenCV • Ouverture et lecture d’Images avec OpenCV • Ouverture et lecture de vidéo avec OpenCV • Gestion des événements (souris, track bar) • Voir le tutoriel: Introduction to programming with OpenCV.doc

  3. Librairies de OpenCV • Librairie Cxcore • Librairie Cv • Librairie Highgui

  4. Librairie Cxcore • Contient les structures de données de base d’OpenCV et supporte l’algèbre linéaire • Structures • CvPoint : point2D avec coordonnées entières • CvPoint2D32f: point 2Davec coordonnées réelles • CvMat : matrice • IplImage: entête d’ image IPL • Opérations • IplImage* cvCreateImage( CvSize size, int depth, int channels ); • IplImage* cvCloneImage( const IplImage* image ); • void cvSetImageROI( IplImage* image, CvRect rect ); • Statistiques • Algèbre linéaire

  5. Librairie Cv • Contient des algorithmes de traitement d’image, d’analyse structurelle, d’analyse du mouvement. • Fonctions populaires • void cvCanny : détection d’arêtes • void cvGoodFeaturesToTrack: détection de coins • void cvCvtColor : Convertion d’image d’un domaine de couleur à un autre • (CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB ) • void cvPyrSegmentation : Segmentation d’image • void cvMoments :Calcule les moments d’ordre 0, 1, 2, et 3 d’une surface • CvHistogram* cvCreateHist :Création d’histogramme • CvSeq* cvConvexHull2 : Déduit l’enveloppe convexe (convex hull) d’un ensemble de points

  6. Exemples de résultats • Détection d’arête Segmentation d’image • Histogramme

  7. Librairie Highgui • GUI simple • Lecture et écriture d’Images • Lecture et écriture de Vidéo

  8. Structure d’image: IplImage • typedef struct _IplImage { int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/ int nChannels; /* Most of OpenCV functions support 1,2,3 or 4 channels */ int depth; /* pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported */ int origin; /* 0 - top-left origin, 1 - bottom-left origin (Windows bitmaps style) */ int align; /* Alignment of image rows (4 or 8). OpenCV ignores it and uses widthStep instead */ int width; /* image width in pixels */ int height; /* image height in pixels */ int imageSize; /* image data size in bytes (==image->height*image->widthStep in case of interleaved data)*/ char *imageData; /* pointer to aligned image data */ int widthStep; /* size of aligned image row in bytes */ } IplImage;

  9. Création d’une image #include "cv.h" // includes OpenCV definitions #include "highgui.h" // includes highGUI definitions #include <stdio.h>// includes C standard input/output definitions int main() { IplImage *cvImg; // image utilisee pour la visualisation CvSize imgSize; // dimension de l’image de visualisation int i = 0, j = 0; imgSize.width = 640; // l’image de visualisation est de imgSize.height = 480; // 640x480 pixels // création d’une image de niveau de gris de 8 bits (0..255) cvImg = cvCreateImage( imgSize, 8, 1 );

  10. Création d’image (suite) for ( i = 0; i < imgSize.width; i++ ) for ( j = 0; j < imgSize.height; j++ ) ((uchar*)(cvImg->imageData + cvImg->widthStep*j))[i] = ( char ) ( ( i * j ) % 256 ); cvNamedWindow( "Testing OpenCV...", 1 ); // creation de la fenetre de // visualisation cvShowImage( "Testing OpenCV...", cvImg ); // affichage de l’image cvWaitKey( 0 ); // attendre une touche enfoncee au clavier cvDestroyWindow( " Testing OpenCV…" ); // fermer la fenetre cvReleaseImage( &cvImg ); // liberer la memoire return( 0 ); // fin du programme }

  11. Déclaration du nom de fichier image à lire Déclaration des images Lecture des fichiers images Spécifier le nom des fichiers image Création de pointeurs sur des structures IplImage Lire les images avec la fonction cvLoadImage() Lecture & Affichage d’ Image #include "cv.h" #include "highgui.h" #include <stdio.h> char name0[] = "../images/airplane.jpg"; char name1[] = "../images/baboon.jpg"; int main() { IplImage* img0 = NULL; IplImage* img1 = NULL; img0 = cvLoadImage( name0, -1 ); // exemple: fichier baboon.jpg est lu et pointé par img1 img1 = cvLoadImage( name1, -1 );

  12. Affichage d’Images cvNamedWindow() crée une fenêtre d’affichage. Paramètres: 1) Titre de la fenêtre. 2) CV_WINDOW_AUTOSIZE, l’image sera ajustée à la fenêtre. cvShowImage() permet d’afficher une image. Lecture & Affichage d’ Image (suite) // une fenetre de visualisation est créée avec comme titre image0 cvNamedWindow( "image0", 1 ); cvNamedWindow( "image1", 1 ); // img0 est affichee dans la fenetre image0 cvShowImage( "image0", img0 ); // img1 est affichee dans la fenetre image1 cvShowImage( "image1", img1 ); cvWaitKey(0); // Attendre qu’une touche au clavier soit enfoncee // liberation de la memoire de l’image img0 cvReleaseImage( &img0 ); // liberation de la memoire de l’image img1 cvReleaseImage( &img1 ); …….. Libérer les Images

  13. Lecture & Affichage d’ Image (suite) // liberation de la memoire de la fenetre image0 cvDestroyWindow( “image0”) ); // liberation de la memoire de la fenetre image1 cvDestroyWindow( “image1”) ); return(0); } Libérer les fenêtres

  14. Résultats (lecture et affichage) Écriture d’image Lecture et affichage d’image

  15. Ouverture et lecture de vidéo avec OpenCV • CvCapture* capture = 0; • capture = cvCaptureFromCAM(-1) // indexe de la caméra ou -1 la premiere disponible ou cvCaptureFromAVI(“video.avi”) • Pour chaque image dans le vidéo • IplImage* frame = 0; • frame = cvQueryFrame( capture ); • image = cvCreateImage( cvGetSize(frame), 8, 3 ); • image->origin = frame->origin; • cvCopy( frame, image, 0 ); image est l’image que vous pouvez alors manipuler

  16. Gestion des événements (souris, track bar) • Création d’un track bar

  17. Gestion des événements (souris, track bar) • Création d’un track bar

  18. Gestion des événements (souris, track bar) • Création d’un track bar

  19. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c)

  20. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c) // conversion de couleur BGR à GRAY // lissage de image03 // cloner l’image image03

  21. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c) // faire pivoter l’image par rapport a l’axe x

  22. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c)

  23. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c): Fonction associée à l’événement de déplacement du track bar

  24. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c): Fonction associée à l’événement de déplacement du track bar

  25. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c): Fonction associée à l’événement de déplacement du track bar

  26. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c): Fonction associée à l’événement de déplacement du track bar

  27. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c): Fonction associée à l’événement de déplacement du track bar

  28. Gestion des événements (souris, track bar) • Gestion des événements de souris

  29. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c)

  30. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c) // specifier la fenetre et la fonction associee //…. le main() se poursuit ici …..

  31. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..)

  32. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..) // Affichage des cercles verts correspondant aux pixels sélectionnés dans l’image

  33. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..)

  34. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..)

  35. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c): fonction associée à l’événement de souris

  36. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c): exécution du programme

  37. Gestion des événements (souris, track bar) • Exemple de programme utilisant OpenCV (lkdemo.c): exécution du programme: événement cliquer bouton gauche

More Related