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

Slides:



Advertisements
Présentations similaires
Été INF1025 Driouch Elmahdi
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
GEF 243B Programmation informatique appliquée
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
C.
FLSI602 Génie Informatique et Réseaux
X-Fonter Utilitaire de gestion des fonts. Vous avez trouvé X-Fonter dans la boîte à outils ou sur le net. Il existe bon nombre de ces utilitaires plus.
Utilitaire pour créer des diaporamas en Flash et HTML : PORTA
Vidéogramme séance 2 du 13 février 2012 Les Fenêtres Windows Micro Informatique au Cellier Joseph HOHN Séance du 13 février 2012 Sur le thème de Découverte.
INF-1019 Programmation en temps réel
Chapitre III Traitement d’images Mme Lahbib Ilhem.
Python Interfaces graphiques
Création d’un programme :
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
PROGRAMMATION SCIENTIFIQUE EN C PRO Généralités u Présentation du plan de cours –Disponibilité –Références u Environnement de travail –Langage C.
TRAITEMENT DE STRUCTURES
Créer une interface graphique avec Photoshop.
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Les fichiers binaires en C++
Traitement d’images et vision par ordinateur avec la librairie OPENCV
IFT Informatique multimédia Cours 3 Mise au point sur la mémoire vidéo Logiciel de traitement de limage Les formats dimages et la compression Présentation.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
IFT 6800 Atelier en Technologies d’information
PIF-6003 Sujets spéciaux en informatique I
OpenCV: Introduction au Traitement d’Images et Vidéo
8PRO100 Éléments de programmation Les types composés.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Représentation et traitement des images en OpenGL
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Tuesday, September 30,  Il y a trois types de données qui sont entrées dans les feuilles de calcules. There are three types of data entered in.
La librairie assert.h.
L’essentiel du langage C
Structures des données
Le langage C Structures de données
Chapitre IX Gestion de flux.
ALGORITHMIQUE ET PROGRAMMATION C
Labo 4 : Les structures et les entrées et sorties
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Projet télésurveillance
ETNA – 1ème année Guillaume Belmas –
Programme de visualisation des événements pris par ATLAS MasterClasses Strasbourg mars 2013.
Programmation Création d’une mire 1 afficher une image
Les types composés Les enregistrements.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
Semaine 06 vA14 Modèle colorimétrique Détection de contours
Introduction au Traitement d’image
Algorithmique et programmation en
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
Programme de visualisation des événements pris par ATLAS MasterClasses Strasbourg mars 2013.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
EMGU-CV: Introduction au Traitement d’Images et Vidéo
Création d'un fichier image
Visualisation des flots optiques en 3D
Utilisation du logiciel: Book Creator
PRO-1027 Programmation Scientifique en C
Conception des pages Web avec
Traitement d’images 420-D78-SW A15 Semaine 02.
FLASH MX : séance 1 Sandrine Rabin Nicolas Mollet SI28.
Présentation Dreamweaver 8 (1) Nina BOUAZIZ et Matthieu DI RUSSO SI28.
Dreamweaver le retour Avec Les Formulaires Les Calques
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
Démarrer le logiciel et ouvrir un fichier
Introduction à OpenCV GEL – Design III Charles du Tremblay
Transcription de la présentation:

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) Voir le tutoriel: Introduction to programming with OpenCV.doc

Librairies de OpenCV Librairie Cxcore Librairie Cv Librairie Highgui

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

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

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

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

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;

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 );

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 }

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 ); 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

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 ); …….. 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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