Bonjour,
je suis débutant dans le domaine de traitement vidéo.
et je cherche les étape a suivre pour suivre les main en utilisant la biblio OpenCV (selon la couleur de peau).
Merci beaucoup
Bonjour,
je suis débutant dans le domaine de traitement vidéo.
et je cherche les étape a suivre pour suivre les main en utilisant la biblio OpenCV (selon la couleur de peau).
Merci beaucoup
Bonjour,
Je ne suis pas le mieux placé pour vous répondre, mais voici quelques pistes.
Je pense que ceci est susceptible de vous aider, mais cela utilise l'ancienne version d'OpenCv.
Pour ma part, j'ai déjà réalisé une telle chose ( il s'agissait de traquer un visage selon la couleur de la peau ) en utilisant Camshift algorithme. Ca marche plutot bien. Une démo officielle est disponible ici
Après tout dépend du contexte de la vidéo. Il n'existe pas un algorithme qui peut traiter tous les contextes. Est-ce que l'image ne contiendra que des mains ? En gros plan ou non ? Est-ce que d'autres objets couleur peau sont susceptibles d'apparaitre à l'image ? Et aussi, est-ce que la couleur de la peau est pré-définie ou bien détectée sur la vidéo ?
j'ai lu la page de geckogeek, mais il n'explique pas comment identifier la couleur de peau
1) pour moi je traite la reconnaissance de geste, cad j'ai un signeur qui fait des signe en utilisant ses mains, donc pour moi il faut faire le hand tracking (j'ai chercher sur internet pour savoir les étapes a suivre mais ... )
2) normalement la couleur de peau est prédéfinie
Dans cet exemple, tous les pixels ayant leur Hue value et Sat value ( dans le système de couleur HSV ) contenus dans un intervalle de couleur sont sélectionnés. Il te suffit de connaître ces deux valeurs pour ta couleur de peau prédéfinie et déterminer un seuil de tolérance définissant cet intervalle.
Après, pour de la reconnaissance de signes, je ne sais pas si le tracking est ou non la meilleure solution.
pour la reconnaissance tu peux essayer de lire ça:
http://opencv.itseez.com/opencv_tutorials.pdf (p.227)
Merci mes amis
y'a t-il un tutorial en français ??
Surement pas aussi complet!
Faut bien s'y mettre un jour à l'anglais
Pour commencer sache que Topolino s'appelle Mickey Mouse en anglais
Bon courage
Mdrrrrrrr Gabriel
S'il vous plait, j'ai besoin de votre aide. je suis débutante en OpenCv, j'ai une image en HSV. je veux dessiner un rectangle qui autours les pixels de l'objet à detecter (dans mon cas les pixels en blanc) mais j'ai toujours eu des fautes
le code est :
#include<cv.h>
#include<cvaux.h>
#include<highgui.h>
#include<cxcore.h>
int main()
{
IplImage *monImage;
int minX=monImage->width;
int minY=monImage->height;
int maxX=0;
int maxY=0;
monImage=cvLoadImage("hsv.jpg");
//pixel blanc(enfin je crois verifie)
CvScalar pixel;
//parcourir tous les pixels de l'image
for (int i=0; i < monImage->height; i++)
{
for (int j=0; j < monImage->width; j++)
{
//recuperer le pixel
pixel = cvGet2D(monImage,i,j);
//si le pixel est blanc alors(essaye de changer avec 0 // si ca marche pas):
if( pixel.val[0] == 1)
{
if( j < minX)minX=j;
if( i < minY)minY=i;
if( j > maxX)maxX=j;
if( i > maxX)maxX=i;
cvSetImageROI(monImage, cvRect(minX, minY, maxX-minX, maxY-minY));
cvNamedWindow("Roi");
cvShowImage("Roi", monImage);
}
}
}
return 0;
}
salut, je cherche la même chose que toi, mais je pense que suivre la couleur est une très mauvaise idée...
apparement, le fichier cascade n'est pas une très bonne idée non plus, puisque la main peu se retrouver dans tellement de forme possibles qu'au final, tu perdrais énormément de temps à prendre des photos, et quelques jours pour générer un XML pas fiable...
J'ai entendu parlé de "blob" le soucis, c'est que la libcvblob n'est dispo qu'en C++.
Il reste donc faire de la recherche de formes combinées... mais j'avoue être totalement perdu... par le manque de documentation parlante à ce sujet... je ne sais comment trouver ces informatitions, et donc, comment trouver les fonctions d'openCV nécéssaires pour ça
parce qu'on ne peut pas forcément prévoir ce qui se trouve dans le fond de l'image :/
et par exemple, si je suis assis devant la cam, y a mon visage devant, le visage et la main ont la même couleur...
Tu peux m'en dire plus ? j'ai l'impression d'avoir perdu 1 semaine de recherches d'un coup :/
En effet, comme je l'ai suggéré plus haut, ça dépend vraiment du contexte. Si des éléments susceptibles d'avoir la même teinte que les mains ont de grandes chances d'apparaître à l'écran, alors le tracking de la teinte est sûrement à écarter.
Hormis ça, il existe des algorithmes suffisamment précis pour être capables de différencier une teinte au premier plan et une autre en arrière plan. OpenCV propose même un algorithme d'extraction de background, mais je ne l'ai pas encore utilisé.
Désolé, la recherche de formes combinées je ne connais pas pour ma part.
la, je voudrais utiliser cvConvexHull2, mais... mon programme plante à l'execution, je comprends pas pourquoi
voilà le code de la fonction :
imgGray passe par cvCvtColor(imgSrc, *imgDst, CV_RGB2GRAY) juste avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void detectPointes(IplImage *imgGray) { CvMemStorage* storage1 = cvCreateMemStorage(0); CvSeq* contours; //cvThreshold(imgGray, imgGray, 150, 255, CV_THRESH_BINARY); CvScalar color = CV_RGB(rand(), rand(), rand()); cvDrawContours( imgGray, contours, color, color, 2, CV_FILLED, 8); //définit les contours CvSeq* hull = cvConvexHull2(contours, 0, CV_CLOCKWISE, 0); cvShowImage( "detectPointes", imgGray ); /*
et la sortie de l'execution donne :
OpenCV Error: Assertion failed (arr != 0 && contour_header != 0 && block != 0) in cvPointSeqFromMat, file /build/buildd-opencv_2.3.1-8-i386-58GsrM/opencv-2.3.1/modules/imgproc/src/utils.cpp, line 47
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd-opencv_2.3.1-8-i386-58GsrM/opencv-2.3.1/modules/imgproc/src/utils.cpp:47: error: (-215) arr != 0 && contour_header != 0 && block != 0 in function cvPointSeqFromMat
Abandon (core dumped)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager