Vous êtes sur la page 1sur 13

POB TECHNOLOGY

DETECTION DE VISAGE PAR WEBCAM

Juillet 2009 | POB Technology

Page |2

INFORMATIONS LEGALES

Entreprise Type SIRET APE

POB-Technology SARL 483 594 386 000 28 742C

CONTACTS

Adresse

Adresse mail Tlphone Fax

POB-Technology 11, avenue Albert Einstein 69 100 VILLEURBANNE FRANCE contact@pob-technology.com +33 (0)4 72 43 02 36 +33 (0)4 83 07 50 89

GESTION DU DOCUMENT

Nom de Fichier Date de cration Auteur Modification

Cam_detection_fr.pdf 28/05/2009 Romain Etchegoyhen Rmi Bruyas Alisson Foucault 09/07/2009

POB TECHNOLOGY Tous droits rserves

Page |3

TABLE DES MATIERES

1. Prsentation ............................................................................................ 4 1.1 Gnralits ................................................................................................. 4 1.2 Outils ncessaires..................................................................................... 4 2. Connexion et mise en route ............................................................ 5 2.1 Dual-POB et PC ....................................................................................... 5 2.2 Dual-POB et servomoteurs ................................................................... 5 2.3 Webcam et PC.......................................................................................... 5 3. Annexe : code & ressources ............................................................. 6 3.1 Programme dexcution DUAL-POB................................................... 6 3.2 Programme de dtection faciale ............................................................ 7

POB TECHNOLOGY Tous droits rserves

Page |4

1. PRESENTATION 1. 1 GNRALITS
Ce document vous prsentera une manire originale dutiliser votre Dual-POB combine deux servomoteurs et une webcam. Vous serez guids pas pas afin de concevoir une webcam qui dtectera et suivra vos visages. Ci-dessous vous trouverez la liste des programmes ncessaires cette ralisation.

1.2 OUTILS NCESSAIRES

Afin de concevoir votre webcam mobile, il vous faudra vous doter dun Dual-POB, de deux servomoteurs, Cot logiciel, POB-tools, le driver de votre webcam, ainsi que lexcutable fournit suffiront une excution de la dtection. Pour la modifier et concevoir votre propre programme danimation des servomoteurs, dautres logiciels seront ncessaires, tels que OpenCV et Visual Studio. La grande majorit de ce matriel se trouve trs facilement sur notre site commercial robot-advance ( http://www.robot-advance.com/FR/).

AF

POB TECHNOLOGY Tous droits rserves

Page |5

2. CONNEXION
Cette partie du document vous aidera connecter et charger les programmes ncessaires lutilisation de notre webcam anime.

2.1 DUAL-POB ET PC
Afin de charger votre programme sur votre Dual-POB, connectez votre Dual-POB votre PC via le cble miniUSB. Une fois votre carte alimente et connecte, utiliser loutil dupload Dual-POB pour charger le programme Cam-detection.hex fournit.

2.2 DUAL-POB ET SERVOMOTEURS


Les servomoteurs animant votre webcam doivent tre li votre Dual-POB selon le schma suivant :

2.3 WEBCAM ET PC
Prenez soin davoir install les pilotes de votre webcam lors que vous tenterez de lutiliser. Si vous navez plus le cd-rom dinstallation, vous pourrez retrouver vos pilotes sur le site constructeur, ou encore en suivant lassistant de configuration windows. Une fois les pilotes installs, vous pouvez connecter votre webcam au PC via son cble USB. Il ne vous reste plus qua lancer lexcutable (FaceDetection.exe), et votre Webcam dtectera et suivra vos visages !

POB TECHNOLOGY Tous droits rserves

Page |6

3. ANNEXE: CODE & RESSOURCES


Vous trouverez dans cette partie tout ce qui est propre au code source des programmes utiliss, ainsi que les outils ncessaire leur conception, voir amlioration. Remarque : Attention, le code t conu sous Visual Studio, logiciel sous licence. Ce qui suit se reposera donc sur une modification du code via Visual Studio uniquement.

3.1 PROGRAMME DEXECUTION DUAL-POB

int main() { UInt8 defDirHB = 180, defDirDG = 92; UInt8 DirHB = 0, DirDG = 1; unsigned char buffer[4], value[2]; SetIOWay(IO_AS_DEFAULT, IO_AS_DEFAULT, IO_AS_DEFAULT, IO_AS_DEFAULT); InitUART0(115200); InitDualServo(); // 200 is top - less then 200 goes down, more goes up // 125 is max down, 225 is max up SetServo(DirHB, defDirHB, 7); // 92 is front - less than 95 turns right, more turns left // 0 is max right, 200 is max left SetServo(DirDG, defDirDG, 7); while(1) { GetBufferFromUART0(&buffer[0], 3); buffer[3] = '\0'; if (strcmp((const char *)buffer, "CDG") == 0) { GetBufferFromUART0(&value[0], 1); value[1]= '\0'; defDirDG = (int)value[0]; SetServo(DirDG, defDirDG, 7); } else if (strcmp((const char *)buffer, "CUP") == 0) { if (defDirHB > 223) { defDirHB = 225; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB + 2; SetServo(DirHB, defDirHB, 7); } } POB TECHNOLOGY Tous droits rserves

Page |7

else if (strcmp((const char *)buffer, "CDO") == 0) { if (defDirHB < 127) { defDirHB = 125; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB - 2; SetServo(DirHB, defDirHB, 7); } } } return 0; }

3.2 PROGRAMME DE DETECTION FACIALE


Lexcutable FaceDetection.exe t conu sous Visual Studio avec une librairie OpenCV (Open Source Computer Vision). Il sagit dune bibliothque dveloppe par la socit Intel, qui propose un ensemble d'objets et de fonctions en C/C++ lis la dtection par ordinateur. Elle est gratuite et multi plateformes. Vous pouvez tlcharger partir de ce lien : OpenCV et vous trouverez la documentation cette adresse : http://www.cognotics.com/opencv/docs/1.0/index.html.

INSTALLATION & CONFIGURATION

Une fois sur le site, il vous suffit ensuite de tlcharger opencv-win, la suite se droule comme pour toutes les installations sous Windows : lancez l'installeur, et laissez-vous guider. Une fois linstallation dOpenCV complte, lancez Visual Studio. Il vous faut maintenant intgrer la librairie OpenCV Visual Studio. Lancez Visual C++, puis consultez le menu Outils => Options. Dans la liste de gauche, choisissez Projets et solutions -> Rpertoires de VC++, ensuite slectionnez Fichiers bibliothques dans la liste tout droite enfin cliquez sur l'icne Nouveau Dossier.

POB TECHNOLOGY Tous droits rserves

Page |8

Slectionnez alors le rpertoire C:\Program Files\OpenCV\lib.

De la mme manire, slectionnez Fichiers Include dans la liste droulante, et ajoutez les rpertoires suivants : C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\cvaux\include

Ensuite, en choisissant l'option Fichiers source, ajoutez les rpertoires : C:\Program Files\OpenCV\cv\src C:\Program Files\OpenCV\cxcore\src C:\Program Files\OpenCV\cvaux\src C:\Program Files\OpenCV\otherlibs\highgui

Maintenant que la librairie est intgre au logiciel, il faut lintgrer au projet lui-mme. Crez un projet "console" sous Visual (File =>New=>Project),

POB TECHNOLOGY Tous droits rserves

Page |9

Allez dans le menu Projet -> Proprits. Dans l'onglet diteur de liens, choisissez Entre puis rajoutez, dans les Dpendances additionnelles, les librairies : cv.lib cvaux.lib cxcore.lib highgui.lib Enfin, N'oubliez pas d'inclure les DLL d'OpenCV dans le dossier de votre projet. Elles se trouvent dans le rpertoire C:\Program Files\OpenCV\bin.

Visual Studio est maintenant correctement configur pour travailler avec OpenCV. Pour les autres IDE, il vous faut ajouter les mmes rpertoires que sous Visual Studio.

POB TECHNOLOGY Tous droits rserves

P a g e | 10

VERIFICATION
Voici un petit programme trs basique qui vous permettra de vrifier si votre configuration a bien t effectue. Glissez dans votre rpertoire projet limage de votre choix en la renommant test.jpg, puis compilez et lancez ce programme #include <cv.h> #include <highgui.h> int main() { // Replace "test.jpg by a picture in the directory of your project IplImage *img=cvLoadImage("test.jpg"); // Create a window cvNamedWindow("Hello World", CV_WINDOW_AUTOSIZE); // Show the picture cvShowImage("Hello World", img); cvWaitKey(0); // Destroy window cvDestroyWindow("Hello World"); cvReleaseImage(&img); return 0; }

Si vous avez bien configur votre Visual Studio, votre image sera affiche dans la fentre !

PROGRAMME FACEDETECTION.C
Maintenant que Visual Studio est configur, vous pouvez charger le code source de notre programme de dtection. #include <Dual-POB.h> int main() { UInt8 portb; UInt8 defDirHB = 180, defDirDG = 92; UInt8 DirHB = 0, DirDG = 1; UInt16 y, x; unsigned char buffer[4], value[2], position[2]; portb = (IO_AS_INPUT << PIN_7); // set the joystick button as input SetIOWay(portb, IO_AS_DEFAULT, IO_AS_DEFAULT, IO_AS_DEFAULT); InitUART0(115200); InitAnalog(); InitDualServo();

POB TECHNOLOGY Tous droits rserves

P a g e | 11 // 200 is top - less then 200 goes down, more goes up // 125 is max down, 225 is max up SetServo(DirHB, defDirHB, 7); // 92 is front - less than 95 turns right, more turns left // 0 is max right, 200 is max left SetServo(DirDG, defDirDG, 7); y = GetAnalog(7); x = GetAnalog(6); while (GetInput(INPUT_PORTB,INPUT_7) != 1) { y = GetAnalog(7); x = GetAnalog(6); if (y < 100) // up { if (defDirHB < 130) { defDirHB = 125; SetServo(DirHB, defDirHB, 1); } else { defDirHB = defDirHB - 5; SetServo(DirHB, defDirHB, 1); } } else if (y > 900) // down { if (defDirHB > 220) { defDirHB = 225; SetServo(DirHB, defDirHB, 1); } else { defDirHB = defDirHB + 5; SetServo(DirHB, defDirHB, 1); } } if (x < 300) // right { if (defDirDG < 5) { defDirDG = 0; SetServo(DirDG, defDirDG, 1); } else { defDirDG = defDirDG - 5; SetServo(DirDG, defDirDG, 1); } } else if (x > 650) // left { if (defDirDG > 195) { defDirDG = 200; SetServo(DirDG, defDirDG, 1); } else { defDirDG = defDirDG + 5; SetServo(DirDG, defDirDG, 1); } POB TECHNOLOGY Tous droits rserves } }

P a g e | 12 SetServo(DirDG, defDirDG+15, 1); SetServo(DirDG, defDirDG-15, 1); SetServo(DirDG, defDirDG+15, 1); SetServo(DirDG, defDirDG-15, 1); SetServo(DirDG, defDirDGv, 1); while(1) { GetBufferFromUART0(&buffer[0], 3); buffer[3] = '\0'; if (strcmp((const char *)buffer, "CDG") == 0) { GetBufferFromUART0(&value[0], 1); value[1]= '\0'; defDirDG = (int)value[0]; SetServo(DirDG, defDirDG, 7); } else if (strcmp((const char *)buffer, "CUP") == 0) { if (defDirHB > 223) { defDirHB = 225; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB + 2; SetServo(DirHB, defDirHB, 7); } } else if (strcmp((const char *)buffer, "CDO") == 0) { if (defDirHB < 127) { defDirHB = 125; SetServo(DirHB, defDirHB, 7); } else { defDirHB = defDirHB - 2; SetServo(DirHB, defDirHB, 7); } } else if (strcmp((const char *)buffer, "GET") == 0) { position[0] = defDirDG; position[1] = defDirHB; SendBufferToUART0(&position[0], 2); } } return 0; }

______________________________________________________________________________________________

Fin du document

POB TECHNOLOGY Tous droits rserves

P a g e | 13

CON NTACTER POB-TE R ECHNOLO OGY

POB-TECHNOL LOGY 11, aven Albert Einstein nue 69 100 VILLEURBANNE France
Site inte ernet Adresse mail e Tlpho one Fax http p://www.pob-technology y.com/ conta act@pob-tech hnology.com +33 (0)4 72 43 02 36 2 +33 (0)4 83 07 50 89 0

PO TECHNOLOGY Tous droits rser OB rves

Vous aimerez peut-être aussi