2016-05-18 3 views
0

Я использую Python 2.7.11 и opencv 2.4.9. У меня есть две prграммы для видео обнаружение лица и люди, обнаруживающие. Тем не менее, он гладкий для обнаружения лица, но медленный или люди, обнаруживающие.Opencv VideoCapture скорость медленная для людей, обнаруживающих

Face Детектирование:

faceCascade = cv2.CascadeClassifier('C:\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml') 
video_capture = cv2.VideoCapture(0) 
while True: 
    ret, frame = video_capture.read() 

    faces = faceCascade.detectMultiScale(
     frame, 
     scaleFactor=1.1, 
     minNeighbors=5, 
     minSize=(30, 30), 
     flags=cv2.CASCADE_SCALE_IMAGE 
    ) 

    for (x, y, w, h) in faces: 
     cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) 

    cv2.imshow('Video', frame) 

    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

video_capture.release() 
cv2.destroyAllWindows() 

Люди Детектирование:

hog = cv2.HOGDescriptor() 
hog.setSVMDetectorcv2.HOGDescriptor_getDefaultPeopleDetector()) 
video_capture = cv2.VideoCapture(0) 
while True: 
    ret, frame = video_capture.read()  

    (rects, weights) = hog.detectMultiScale(
     frame, 
     winStride=(4, 4), 
     padding=(8, 8), 
     scale=1.05 
    ) 

    rects = np.array([[x, y, x + w, y + h] for (x, y, w, h) in rects]) 

    pick = non_max_suppression(rects, probs=None, overlapThresh=0.65) 


    for (xA, yA, xB, yB) in pick: 
     cv2.rectangle(frame, (xA, yA), (xB, yB), (0, 255, 0), 2) 

    cv2.imshow("Before NMS", frame) 

    k = cv2.waitKey(5) & 0xFF 
    if k == 27: 
     break 

video_capture.release() 
cv2.destroyAllWindows() 
+0

В чем вопрос? –

+0

Ops, я хочу спросить, как ускорить признание людей. – VICTOR

ответ

1

обнаружения На самом деле человека является очень трудоемким алгоритм. Вы подробно проверяете алгоритм here. Мы можем изменить аргументы, передаваемые функции hog. Подобно winStride, padding и scale это изменение скорости алгоритма. Только тонкая настройка еще влияет на результат.

Или вы можете реализовать еще один шаг перед обнаружением людей. Подобно обнаружению движения, тогда проверяйте только людей, если происходят какие-либо движения. Вы можете найти код python для обнаружения движения here. Поэтому он удаляет ненужную проверку для людей.

Смежные вопросы