Jestem prawie pewien, że mam ogólny motyw prawidłowy, ale nie znajduję żadnych twarzy. Mój kod czyta się z c=cv2.VideoCapture(0)
, tj. Z kamery wideo komputera. Następnie mam następującą konfigurację, aby uzyskać miejsce, w którym znajdują się twarze. Jak widzisz, przechodzę przez różne współczynniki scale i minNeighbors, ale rects zawsze wraca puste. Próbowałem również każdego z czterech różnych plików xml haarcascade zawartych w pakiecie opencv/data/haarcascades.Używanie OpenCV detectMultiScale do znalezienia mojej twarzy
Jakieś wskazówki?
while(1):
ret, frame = c.read()
rects = find_face_from_img(frame)
def detect(img, cascade):
for scale in [float(i)/10 for i in range(11, 15)]:
for neighbors in range(2,5):
rects = cascade.detectMultiScale(img, scaleFactor=scale, minNeighbors=neighbors,
minSize=(20, 20), flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
print 'scale: %s, neighbors: %s, len rects: %d' % (scale, neighbors, len(rects))
def find_face_from_img(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.equalizeHist(gray)
rects = detect(gray, cascade)
Dziękuję za wypróbowanie tego, chociaż nie widzę, gdzie Twój opublikowany kod różni się od mojego, pomijając trochę refaktoryzacji. Lokalizacja pliku jest poprawna - mogę go skopiować, przetestować i wydrukować pełny plik xml. – user592419
Nie zmieniłem nic o twoich 2 funkcjach. Właśnie zmieniłem główny. Nie dostaniesz żadnych rectów? – Ojtwist
Zaskakująco, nie. Mam brodę, ale nie łapie też mojego przyjaciela. – user592419