2016-05-05 20 views
0

Ich teste mehrere Methoden zum Finden von Region of Interest in Handgeste. In opencv habe ich zum Beispiel einige Methoden wie camshift (zum Verfolgen eines Interessenobjekts), einige Hintergrundextraktionsmethoden (MoG, MoG2, ..) gefunden, die speziell im Video verwendet werden, um Hintergrund vom Vordergrund zu subtrahieren, was auch verwendet werden kann Hand als Objekt in einem Video mit komplexem Hintergrund. und auch GrabCut und Backproject-Methoden, die für die Handhaltung in einem statischen Zustand verwendet werden können. Konturen-, Kantendetektions- oder Skin-Methoden sind einige andere Ansätze zum Erkennen von Hand in einem Bild oder Video. Und schließlich fand ich, dass Haarkaskade auch verwendet werden kann. Ich möchte wissen, dass für den Übergang von dieser Stufe, welcher Algorithmus die beste Wahl ist, wenn man bedenkt, dass ich Bilder mit komplexem Hintergrund verwende. einige Algorithmen wie Grabcut oder Backproject waren gut, aber das wichtigste Problem war, dass ich einige Regionen manuell als Vordergrund oder Hintergrund spezifizieren sollte und das ist nicht das, was es sein sollte. Nach der Wahl einer Methode für Roi, in der Regel was sind die wichtigsten Merkmale in der Hand Gestenerkennung? zum Extrahieren von Funktionen welche Methode ist Ihr Vorschlag? das kann gut mit einem der allgemeinen Klassifizierer wie svm, knn, usw. funktionieren, um ein spezifiziertes Bild zu klassifizieren.welche Methode ist am besten zum Finden der Region von Interet für Hand Gestenerkennung

Vielen Dank für Ihre Zeit

Antwort

0

nehmen Sie können mit dem HSV basierter Hautfarbe Filterung starten, um die Haut farbigen Objekte im Bild ... in den meisten Fällen zu isolieren, die das Gesicht und die Handfläche bilden werden. Sie können dann die Gesichtserkennung verwenden, um den Gesichtsfleck zu isolieren und anschließend zu entfernen. Sobald Sie die Handfläche extrahiert haben, können Sie ihre Kontur vereinfachen (überprüfen Sie approxPolyDP in OpenCV) und die Anzahl der Konvexitätsfehler in der Handkontur zählen. Da Sie nicht von Ihnen angegebene Hauterkennung, welche Programmiersprache Sie gerade arbeiten, hier ist ein Python-Code beginnen:

import cv2 

def nothing(x): #needed for createTrackbar to work in python. 
    pass  

cap = cv2.VideoCapture(0) 
cv2.namedWindow('temp') 
cv2.createTrackbar('bl', 'temp', 0, 255, nothing) 
cv2.createTrackbar('gl', 'temp', 0, 255, nothing) 
cv2.createTrackbar('rl', 'temp', 0, 255, nothing) 
cv2.createTrackbar('bh', 'temp', 255, 255, nothing) 
cv2.createTrackbar('gh', 'temp', 255, 255, nothing) 
cv2.createTrackbar('rh', 'temp', 255, 255, nothing) 
while true 
     ret,img=cap.read()#Read from source 
     hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) 
     bl_temp=cv2.getTrackbarPos('bl', 'temp') 
     gl_temp=cv2.getTrackbarPos('gl', 'temp') 
     rl_temp=cv2.getTrackbarPos('rl', 'temp') 
     bh_temp=cv2.getTrackbarPos('bh', 'temp') 
     gh_temp=cv2.getTrackbarPos('gh', 'temp') 
     rh_temp=cv2.getTrackbarPos('rh', 'temp') 
     thresh=cv2.inRange(hsv,(bl_temp,gl_temp,rl_temp),(bh_temp,gh_temp,rh_temp)) 
     if(cv2.waitKey(10) & 0xFF == ord('b')): 
     break #break when b is pressed 
     cv2.imshow('Video', img) 
     cv2.imshow('thresh', thresh) 
+0

Vielen Dank für Ihre Kommentare, wenn ich eine verwenden möchten Python-C++ - opencv Algorithmus für den Erhalt der Region von Interesse (Hand) Welche Methode ist Ihre Empfehlung? – Maryam

+0

Ich habe den Code verwendet, es sagt ungültige Syntax in Zeile während True. Mein Python ist 3.5 und opencv 3.1 – Maryam

+0

Dieser Code ist auf OpenCV 2.4.9 gebaut. Daher die ungültige Syntax. Sie müssen Änderungen gemäß OpenCV 3.x vornehmen –