• Aucun résultat trouvé

Introduction à OpenCV

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction à OpenCV"

Copied!
19
0
0

Texte intégral

(1)

GEL – 21405 Design III

Introduction à OpenCV

Charles du Tremblay

A 2006

(2)

Plan

Pourquoi OpenCV?

Qu’est-ce qu’OpenCV?

Structure de l’image IPL

Fonctionnalités offertes

Exemples d’utilisation

(3)

Pourquoi OpenCV?

1.

Une grande part de vos résultats dépendent de la vision.

2.

Fournit un lien entre la caméra et votre application (IA).

3.

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

YC

R

C

B

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

Seuil sur RGB : blanc Seuil sur HSV : rouge Image originale

Permet une première identification des points d’intérêts.

Garde les pixels de la couleur de l’objet

recherché

(12)

Exemple d’application

Trouver un objet rouge dans une image:

1.

Initialiser la caméra et les images.

2.

Convertir l’espace couleur.

3.

Parcourir l’image HSV et vérifier les pixels par rapport aux seuils fixés.

4.

Détruire l’image et libérer la mémoire.

(13)

Exemple d’application

1.

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

2.

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

3.

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

3.

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

4.

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)

Références:

1. Intel Image Processing Library Reference Manual 2. OpenCV Reference Manual

3. http://wcours.gel.ulaval.ca/2006/a/21405/default/7references/index.chtml

4. http://www.site.uottawa.ca/~laganier/tutorial/opencv+directshow

5. http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/

Références:

1. Intel Image Processing Library Reference Manual 2. OpenCV Reference Manual

3. http://wcours.gel.ulaval.ca/2006/a/21405/default/7references/index.chtml

4. http://www.site.uottawa.ca/~laganier/tutorial/opencv+directshow

5. http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/

Références

Documents relatifs

Dans quelques semaines, vous allez prendre des fonctions de direction, en tant que chef d’établissement adjoint, dans un établissement public local d'enseignement (EPLE) avec

Dans son char, enveloppé d'une épaisse nuée noire, Phaéton n'avait qu'un seul désir : que ce cauchemar se termine au plus vite!. Plutôt la mort que cette terreur

– format depends on the computer that wrote the file: we need to store this information in the file heading. – format does not depend on the computer that wrote the file: little

En el contexto mundial actual, marcado por el incre- mento veloz de las comunicaciones y los desarrollos tecnológicos, la transnacionalización, el capitalismo a ultranza con

In our previous paper [2], we gave, first, examples of solutions to Strominger’s system on a non-K¨ ahler manifold, which is a torus bundle over a K3 surface.. In this paper, we

KEY WORDS : naphthoquinones, Toxoplasma gondii, strain, in vitro, murine models.. R ésum é : A c tiv ité d e n aph th oquin on es naturelles et SYNTHÉTIQUES CONTRE

A low percentage of Indians from Xingu PA and of non-immune migrants displayed antibodies against liver-stage (27% and 17%) and sporozoite (11% and 12%) peptides, although

Blood was taken from a donor mouse at 10.00 hours, when it contained mainly young stages and inoculated to receptor mice, either immediately or after 8 hours at +4°C..