begin process at 2012 05 27 15:35:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimédia

 > DÉTECTION DE VISAGE (YEUX, NEZ, BOUCHE) AVEC OPENCV EN TEMPS RÉEL

DÉTECTION DE VISAGE (YEUX, NEZ, BOUCHE) AVEC OPENCV EN TEMPS RÉEL


 Information sur la source

Note :
Aucune note
Catégorie :Multimédia Classé sous :opencv, visage, detection, webcam, face Niveau :Initié Date de création :13/10/2010 Date de mise à jour :13/10/2010 02:33:23 Vu / téléchargé :12 957 / 1 548

Auteur : MadM@tt

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (30)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Détection de visages en temps réel.

Détection dans chaque visage des :
- yeux
- nez
- bouche

Utilisation de POO avec classes :
- Face (visage, contenant les coordonnées des éléments détectés)
- Détection (détection des objets)
- Webcam (récupération d'images de la webcam)

Affichage de la capture de la webcam avec détourage des éléments détectés dans une fenêtre.

Le code est en anglais, et commenté.

Compilé sur un Mac Os X 1.5 avec OpenCV 2.1 dans Eclipse CDT. Devrait marcher sous Windows et Linux sans problème.
Pour faire tourner la source, créer un répertoire : data/haarcascades/ et y ajouter toutes les cascades d'OpenCV.
Attention : nécessite OpenCV 2.1 d'installé.

Source

  • // Get Webcam image
  • webcam->getImage(img);
  • // Detect faces
  • vector<Face*>* faces = detection->detectFaces(img);
// Get Webcam image
webcam->getImage(img);

// Detect faces
vector<Face*>* faces = detection->detectFaces(img);

 Conclusion

Les commentaires sont les bienvenus !
Ce développement va être poursuivit, n'hésitez pas à proposer des idées pour accélérer/améliorer la détection.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

13 octobre 2010 02:33:27 :
Ajout d'infos supplémentaires

 Sources de la même categorie

Source avec Zip ADAPTER LES TEMPS DE SUBTITLES DE SOUS TITRAGE ENTRE DEUX LA... par berrami
Source avec Zip Source avec une capture GÉNÉRATEUR FM EXPÉRIMENTAL par tontonCD
Source avec Zip LECTEUR MULTIMÉDIA par omegatou
Source avec Zip IMPLÉMENTATION D'UN ALGORITHME DE COMPRESSION/DECOMPRESSION ... par eemikhm
Source avec Zip Source avec une capture [WIN32] EASY WAVE MIXER par ordiman85

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SPEED FACE par Ficheur
Source avec Zip Source avec une capture USB DETECTION par abandonware
Source avec Zip KMEANS OPENCV WXWIDGETS par walidoss1
Source avec Zip Source avec une capture Source .NET (Dotnet) WEBCAM C++.NET par lacousine
Source avec Zip Source avec une capture CLASSE WEBCAM AVANCÉ ET SON UTILISATION par Mattpbem

Commentaires et avis

Commentaire de thob31 le 19/10/2010 08:45:00

Bonjour,
Pour ma part, je n'arrive pas à compiler sous windows, les erreurs viendraient de la lib OpenCv...

Commentaire de MadM@tt le 19/10/2010 09:34:54

Est-ce que tu arrives à faire tourner l'exemple d'OpenCV déjà ? Si c'est pas le cas, le problème n'est pas relié avec cette source alors.

Commentaire de thob31 le 19/10/2010 11:18:33

Les exemples d'OpenCv marchent tous très bien :S

Commentaire de MadM@tt le 19/10/2010 12:08:06

Et quel genre d'erreur obtiens-tu ?

Commentaire de rob57530 le 20/10/2010 04:16:14

Ça à l'air pas mal je me pencherai dessus un peu plus tard ;)

Commentaire de thob31 le 20/10/2010 17:51:05

J'obtiens des erreurs lors de la compilation (j'ai ajouté tout les fichiers d'OpenCV nécessaires), voici le log ( sous dev-c++ ) :

http://thobworld.com/log_compilation.txt

Commentaire de MadM@tt le 20/10/2010 18:15:06

Il semble que toutes les erreurs viennent d'OpenCV. C'est seulement dans les dernières lignes qu'il y'a 4 erreurs dans main.cpp, qui correspondent à l'appel d'une fonction opencv.
Je ne pense pas que ça vienne du code dans ce cas.

Commentaire de thob31 le 20/10/2010 18:28:25

Oui, c'est bizarre, pourtant, tout les samples marchent, je ne comprend pas...

Commentaire de JulSoft le 11/11/2010 09:08:50

Les parametres passés à g++ me smeblesn étrange... Perso, sous linux, je compile mes progs opencv comme ça:
gcc main.cpp -lstdc++ -lm -lcv -lhighgui -lcvaux

Dans la version de THOB31, on dirait qu'il manque les ldflags...

Commentaire de MadM@tt le 11/11/2010 10:31:42

Attention ici il s'agit de la dernière version d'OpenCV (2.2 je crois), et les noms des librairies ont changés.
(enfin je pense que ce code reste compatible à condition de renommer les include je pense).

Commentaire de lilington le 07/12/2010 08:48:14

bon la compilation sous linux avec gcc donne l'erreure suivante:

In file included from Webcam.cpp:8:0:
Webcam.h:20:7: error: extra qualification 'Webcam::' on member 'getImage'

Commentaire de MadM@tt le 07/12/2010 11:20:51

Et si tu retires "Webcam::" ?

Commentaire de lilington le 08/12/2010 09:29:10

maintenant je me rend compte qu'il y avait pas de main.
et justement pourquoi avoir mis un Webcam:: dans la definition de la class?

Commentaire de MadM@tt le 08/12/2010 10:18:10

Il y'a un main dans main.cpp ? (je ne suis pas sur de te suivre)

Concernant le Webcam::, je crois que c'est un réflexe d'autre langage, et de ce que j'ai compris c'est autorisé sur d'anciennes versions de g++, donc c'est pour ça que je n'ai pas eu d'erreur. Je corrigerai ça quand j'aurai le temps de me remettre sur le projet.

Commentaire de lilington le 09/12/2010 06:11:06

currieusement j'ai pas eu de main.cpp dans le zip :)

Commentaire de lilington le 09/12/2010 06:18:06

bref laissons la compilation je vais faire un copier coller du main.cpp.
sinon comment tu fais pour avoir aussi peu de faux visage?
est-ce parceque tu n'utilises pas la fonction cvHaarDetectObjects? en effet c'est celle que moi j'utilise et honetement j'ai tres trop souvent des truc detecte qui n'ont rien avoir avec des faces.

Commentaire de MadM@tt le 09/12/2010 11:30:27

Ah peut être. Après ça dépend peut être du fichier haarcascade utilisé. J'ai aussi modifié l'algorithme utilisé par défaut dans l'exemple lors de l'appel à la fonction de détection, car celui que j'utilise est plus rapide (peut être que ça change ça aussi).
Content que ça marche en tout cas.

Commentaire de vadech le 10/12/2010 00:26:28

Bonjour,
j'essai d'utiliser votre source mais impossible de linker.
Je ne comprend pas pkoi.
Voici le log:
g++ main.cpp -Wall -lserial -o go `pkg-config --cflags opencv` `pkg-config --libs opencv`
/tmp/cc8SlkML.o: In function `main':
main.cpp:(.text+0x40): undefined reference to `Webcam::Webcam()'
main.cpp:(.text+0x69): undefined reference to `Detection::Detection()'
main.cpp:(.text+0xc7): undefined reference to `Webcam::getImage(cv::Mat&)'
main.cpp:(.text+0xdc): undefined reference to `Detection::detectFaces(cv::Mat&)'
main.cpp:(.text+0x25f): undefined reference to `Face::getRect()'
main.cpp:(.text+0x361): undefined reference to `Face::hasEyes()'
main.cpp:(.text+0x37a): undefined reference to `Face::getLeftEye()'
main.cpp:(.text+0x3b2): undefined reference to `Face::getRightEye()'
main.cpp:(.text+0x3f6): undefined reference to `Face::hasMouth()'
main.cpp:(.text+0x40f): undefined reference to `Face::getMouth()'
main.cpp:(.text+0x447): undefined reference to `Face::hasNose()'
main.cpp:(.text+0x460): undefined reference to `Face::getNose()'
collect2: ld returned 1 exit status
make: *** [all] Erreur 1

Merci d'avance pour votre aide.

Commentaire de lilington le 10/12/2010 04:00:16

faudrait aussi compiler les autres sources.

g++ main.cpp lib/Webcam.c lib/leshautres.c -Wall -lserial -o go `pkg-config --cflags opencv` `pkg-config --libs opencv`

Commentaire de Warrior9 le 31/01/2011 20:10:14

Bonjour,

J'ai compiler avec la commande :
g++ -o dect main.cpp Detection.cpp Face.cpp Webcam.cpp -lcv -lhighgui

Sa compile mais lorsque je lance dect j'ai une fenêtre qui se lance avec le flux video de la webcam mais à un moment j'ai des erreurs :  

Lancement 1:

ERROR: Could not load face cascade
ERROR: Could not load eyes cascade
ERROR: Could not load eyes cascade 2
ERROR: Could not load mouth cascade
ERROR: Could not load nose cascade
Erreur de segmentation

Lancement 2:

ERROR: Could not load face cascade
ERROR: Could not load eyes cascade
ERROR: Could not load eyes cascade 2
ERROR: Could not load mouth cascade
ERROR: Could not load nose cascade
Corrupt JPEG data: 5 extraneous bytes before marker 0xd6


Je suis novice en OpenCV. Mais je me demande a quoi servent ces .xml ( que j'ai pas ).
String cascadeNameFace = "data/haarcascades/haarcascade_frontalface_alt.xml";
String cascadeNameEyes = "data/haarcascades/haarcascade_eye.xml";
String cascadeNameEyes2 = "data/haarcascades/haarcascade_eye_tree_eyeglasses.xml";
String cascadeNameMouth = "data/haarcascades/haarcascade_mcs_mouth.xml";
String cascadeNameNose = "data/haarcascades/haarcascade_mcs_nose.xml";

Merci d'avance pour ton aide.


Commentaire de MadM@tt le 31/01/2011 21:01:42

Ces fichiers contiennent les définitions des parties du visage à détecter. Tu peux les trouver dans OpenCV.

Commentaire de Warrior9 le 31/01/2011 21:40:16

Salut,

Merci sa fonctionne maintenant. J'ai pas les .xml avec ma version opencv .....

J'ai adapter pour le faire sur une image passée en paramètre. Avec un visage en 418x508 px en png sa fonctionne bien aussi.

J'ai testé avec un visage bien cadré de la base ORL face database. Mais sa ne fonctionne pas.
Pour infos les images sont de types : The size of each image is 92x112, 8-bit grey levels.

Tu vois d'où pourrai venir le problème ?

Merci d'avance

Commentaire de MadM@tt le 31/01/2011 21:43:12

Non je ne vois pas trop, dans ce cas je te conseille d'essayer avec l'exemple de base d'openCV, on ne sait jamais.

Commentaire de Warrior9 le 31/01/2011 21:59:38

Salut,

Ok merci je vais voir sa.

Commentaire de Warrior9 le 02/02/2011 15:17:55

Salut,

J'ai un amis qui a testé tes sources sur sa machine.
Il a l'erreur suivante : ( je ne voie pas trop )

g++ -o dect main.cpp Detection.cpp Face.cpp -lcv -lhighgui


main.cpp: In function 'int main(int, const char**)':
main.cpp:91: error: conversion from 'cv::Rect_<int>' to non-scalar type 'cv::Point' requested
main.cpp:96: error: conversion from 'cv::Rect_<int>' to non-scalar type 'cv::Point' requested
main.cpp:103: error: conversion from 'cv::Rect_<int>' to non-scalar type 'cv::Point' requested
main.cpp:110: error: conversion from 'cv::Rect_<int>' to non-scalar type 'cv::Point' requested



Une idées ?

Merci d'avance

Commentaire de marwamaissa le 10/02/2011 12:54:38

bonjour,
pour ma part, la compilation est vrai, mais quand je passe à l'exécution une erreur est trouvé dans le fichier Webcam.cpp à la ligne 24 : frame = iplImg; !!!!!!!!
je crois que le deux types de donnée frame et iplImg ne sont pas compatibles, est ce que ce vrai ou non ???

Commentaire de didoumila le 08/02/2012 07:41:23

bonjour
je travaille sous code blocks et opencv 2.2 (sous win);j'ai télécharger le zip mais je n'arrive pas à le compiler et j' ai l'erreur suivante E:\c++\cppfrance_DETECTION-VISAGE-YEUX-NEZ-BOUCHE-AVEC-OPENCV-TEMPS___Page\lib\Webcam.h|20|error: extra qualification 'Webcam::' on member 'getImage'|
merci de m'aider

Commentaire de ttjtheo le 03/03/2012 15:51:46

salut
  je suis novice en opencv et ayant  lus le tutoriel sur la face detection je crois n'avoir  pas compris  a quoi serve certaine ligne de code pour la realisation della face detection,  come par exemple celle ci:1) vector<Rect> facesRect;
                 2)vector<Face*>* faces = new vector<Face*>();
jai des doutes mais ces vecteur servent a sauvegarder temporairement en memoire les images qui seront traiter par la fonction de classification?

en plus la fonction "detectMultiScale" serait elle la mm que celle utilise dans la version opencv 2.1 c.a.d  "cvHaarDetectObjects "?
merci d'avance pour l'aide

Commentaire de DANIA511 le 24/03/2012 11:27:45

salut , j'ai un problème au niveau de l'installation de l'opencv2.3.0.
lorsque je compile, je reçois un message  "opencv_highgui230d.dll not found, malgré que j'ai bien ajouter C:\OpenCV2.3\build\x86\vc9\bin à l'environment path,et aussi j'ai vérifier l'existence de"opencv_highgui230d.dll" . aidez-moi s'il vous plait !!!!

Commentaire de redvella le 23/05/2012 15:35:58

Bonjour,
j'ai utilisé votre code mais malhereusement il ne marche pas, il m'affiche erreur en include "lib/webcome.h"
pouvez vous m'aidez SVP à resoudre ce problème
Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

webcam detection de mouvements [ par gniafrond ] voila j ai un projet et je dois detecter des mouvements via la webcam et selon les mouvements ouvrir des applications ou faire d autres trucsdonc pour detection d'intrusion à l'aide d'une webcam [ par miro206 ] salut,Bonjour, je suis  entrain de préparer mon projet fin d'études sur la détection d'intrusion dont je l'ai diviser en deux parties:-Partie pour l'a controle de souris via detection de la main [ par crycrydamour ] Bonjour!Avec mes camarades nous travaillons sur un projet. Controler la souris avec une webcam par la detection de la main. Pour celà nous avons pensé openCV : Modifier la Résolution d'un flux video Webcam [ par Daemonight ] Bonjour à tous,afin de travailler sur un projet de Stereo Vision avec openCV, je souhaiterai savoir s'il est possible de modifier la taille (résolutio opencv visualisation de 2 webcam simultanément [ par pem1664 ] Bonjour a tous, j'essai de faire fonctionner 2 webcam iddentique simultanément via les librairies d'opencv. le probleme c'est que lors de l'utilisatio Detection de clique de souris sur une face en opengl [ par Rayn3d ] Bonjour a tous, Voila j'ai un souci, j'ai creer une espece de menu en opengl, avec 3 face texture (que l'on peut faire tourner en maintenant le bouton detection du visage [ par sousoi ] bonsoir; voila mon probleme est le suivant: j'ai un fichier vrml qui contient les donnée 3D d'une scene qui contient un visage ( les donnée 3D sont x OpenCv : detection d'objets a partir d'une camera en mouvement [ par glen1789 ] Bonjour, Dans le cadre d'un stage de fin de DUT on me demande de travailler sur la detection d'objets a partir d'une camera en mouvement en utilisant segmentation d'une image (OpenCv) [ par alichem8 ] Salut , dans mon projet je dois récupérer les segments importants d'une image pour faire la reconstruction 3D, j'ai utilisé cvFindContours (OpenCv)mai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales