2016-09-06 5 views
0

Ich versuche, HOG-Deskriptor mit OpenCV zu implementieren, um Fußgänger in einem video zu erkennen. Ich verwende derzeit den vorgefertigten Datensatz von OpenCV hogcascade_pedestrians.xml. Leider ist die Dokumentation zu diesem Teil im Internet sehr schlecht, obwohl der HOG Descriptor sehr effektiv für die menschliche Erkennung ist. Ich habe einen Code für Fußgänger-Detektion mit Python geschrieben, und ich habe in dem folgenden Code gestoppt:HOG-Deskriptor mit Python + OpenCV

import cv2 
import numpy as np 
import imutils 

VidCap = cv2.VideoCapture('pedestrians.mp4') 

HOGCascade = cv2.HOGDescriptor('hogcascade_pedestrians.xml') 
HOGCascade.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) 

while True: 

    _ , image = VidCap.read() 
    image = imutils.resize(image, width=700) 

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
    clahe = cv2.createCLAHE(clipLimit=15.0,tileGridSize=(8,8)) 
    gray = clahe.apply(gray) 

    winStride = (8,8) 
    padding = (16,16) 
    scale = 1.05 
    meanshift = -1 

    (rects, weights) = HOGCascade.detectMultiScale(gray, winStride=winStride, 
              padding=padding, 
              scale=scale, 
              useMeanshiftGrouping=meanshift) 

    for (x, y, w, h) in rects: 
     cv2.rectangle(image, (x, y), (x+w, y+h), (0,200,255), 2) 

    cv2.imshow('Image', image) 

    if cv2.waitKey(5) == 27: 
     break 

VidCap.release() 
cv2.destroyAllWindows() 

Ich nehme an, dass das Code-Scripting etwas wie Codes geschrieben für Haar Cascades sein würde. Aber ich habe es versucht und Fehler bekommen. Hat jemand eine Idee, wie man den HOG-Deskriptor auf OpenCV mit Python implementiert?

Ich habe die folgenden question gelesen, aber ich bekomme nichts von der zweiten Antwort.

Mein Problem ist, dass ich nicht den Weg finden kann, den Code zu schreiben, da die Dokumentation über diesen Teil sehr schlecht ist.

Hinweis: Ich bin mit OpenCV 3.1.0-dev mit Python 2.7.11

Antwort

0
HOGCascade = cv2.HOGDescriptor() 

Wenn Sie diese .xml verwenden möchten, Sie haben viele Vorbereitungsarbeiten zu tun.

Wann endlich den verfügbaren Descriptor erhalten, sollten Sie den cv2.HOGDescriptor_getDefaultPeopleDetector() in setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())

+0

Zu allererst die XML-Datei wird von OpenCV selbst zur Verfügung gestellt ersetzen, wenn 3.1.0 die neueste Version herunterzuladen. Die zweite Sache ist, dass ich nicht verstehe, was du meinst: D – Tes3awy