![Page 1: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/1.jpg)
OpenCV: Introduction au Traitement d’Images et
Vidéo
François MeunierDMI
![Page 2: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/2.jpg)
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
![Page 3: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/3.jpg)
Librairies de OpenCV
Librairie Cxcore Librairie Cv Librairie Highgui
![Page 4: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/4.jpg)
Librairie Cxcore Contient les structures de données de base d’OpenCV et supporte l’algèbre
linéaire Structures
CvPoint : point 2D avec coordonnées entières CvPoint2D32f: point 2D avec 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
![Page 5: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/5.jpg)
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
![Page 6: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/6.jpg)
Exemples de résultats Détection d’arête Segmentation
d’image
Histogramme
![Page 7: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/7.jpg)
Librairie Highgui
GUI simple Lecture et écriture d’Images Lecture et écriture de Vidéo
![Page 8: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/8.jpg)
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_32Fand 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;
![Page 9: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/9.jpg)
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 definitionsint main(){
IplImage *cvImg; // image utilisee pour la visualisationCvSize imgSize; // dimension de l’image de visualisationint i = 0, j = 0; imgSize.width = 640; // l’image de visualisation est deimgSize.height = 480; // 640x480 pixels// création d’une image de niveau de gris de 8 bits (0..255)cvImg = cvCreateImage( imgSize, 8, 1 );
![Page 10: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/10.jpg)
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 fenetrecvReleaseImage( &cvImg ); // liberer la memoirereturn( 0 ); // fin du programme
}
![Page 11: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/11.jpg)
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 img1img1 = cvLoadImage( name1, -1 );
Spécifier le nom des fichiers image
Déclaration du nom de fichier image à lire
Création de pointeurs sur des structures IplImage
Déclaration des images
Lire les images avec la fonction cvLoadImage()
Lecture des fichiers images
![Page 12: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/12.jpg)
Lecture & Affichage d’ Image (suite)
// une fenetre de visualisation est créée avec comme titre image0cvNamedWindow( "image0", 1 );cvNamedWindow( "image1", 1 );// img0 est affichee dans la fenetre image0cvShowImage( "image0", img0 );// img1 est affichee dans la fenetre image1cvShowImage( "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 );……..
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.
Affichage d’Images
Libérer les Images
![Page 13: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/13.jpg)
Lecture & Affichage d’ Image (suite)
// liberation de la memoire de la fenetre image0cvDestroyWindow( “image0”) ); // liberation de la memoire de la fenetre image1cvDestroyWindow( “image1”) ); return(0);
} Libérer les fenêtres
![Page 14: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/14.jpg)
Résultats (lecture et affichage)
Écriture d’image
Lecture etaffichage d’image
![Page 15: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/15.jpg)
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
![Page 16: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/16.jpg)
Gestion des événements (souris, track bar)
Création d’un track bar
![Page 17: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/17.jpg)
Gestion des événements (souris, track bar)
Création d’un track bar
![Page 18: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/18.jpg)
Gestion des événements (souris, track bar)
Création d’un track bar
![Page 19: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/19.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c)
![Page 20: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/20.jpg)
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
![Page 21: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/21.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c)
// faire pivoter l’image par rapport a l’axe x
![Page 22: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/22.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (findThresholdFaceNIR.c)
![Page 23: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/23.jpg)
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
![Page 24: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/24.jpg)
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
![Page 25: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/25.jpg)
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
![Page 26: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/26.jpg)
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
![Page 27: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/27.jpg)
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
![Page 28: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/28.jpg)
Gestion des événements (souris, track bar)
Gestion des événements de souris
![Page 29: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/29.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c)
![Page 30: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/30.jpg)
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 …..
![Page 31: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/31.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..)
![Page 32: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/32.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..)
// Affichage des cercles verts correspondant aux pixelssélectionnés dans l’image
![Page 33: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/33.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..)
![Page 34: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/34.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c: main() suite..)
![Page 35: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/35.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c): fonction associée à l’événement de souris
![Page 36: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/36.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c): exécution du programme
![Page 37: OpenCV: Introduction au Traitement d Images et Vid é o Fran ç ois Meunier DMI](https://reader036.vdocuments.mx/reader036/viewer/2022062404/551d9da1497959293b8d08d3/html5/thumbnails/37.jpg)
Gestion des événements (souris, track bar)
Exemple de programme utilisant OpenCV (lkdemo.c): exécution du programme: événement cliquer bouton gauche