Скрипт python не останавливается - PullRequest
2 голосов
/ 01 апреля 2020

Я использую opencv и numpy для обнаружения человеческого тела с использованием HOGDescriptor. Вот код, с которым я играю:

import numpy as np
import cv2
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
cv2.startWindowThread()
cap = cv2.VideoCapture('C:/Users/****/Desktop/people_walk.mkv')
while(True):
    ret, frame = cap.read()
    frame = cv2.resize(frame, (640, 480))
    gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
    boxes, weights = hog.detectMultiScale(frame, winStride=(8,8) )
    boxes = np.array([[x, y, x + w, y + h] for (x, y, w, h) in boxes])
    for (xA, yA, xB, yB) in boxes:
        cv2.rectangle(frame, (xA, yA), (xB, yB),
                          (0, 255, 0), 2)
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
cv2.waitKey(1)

Поэтому после нажатия q окно камеры должно закрыться. На самом деле это так, но скрипт продолжает работать, и все выполнение не останавливается даже после нажатия ctrl + c или выхода (). Любая помощь с этим?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Похоже, проблема была в строке

hog = cv2.HOGDescriptor()   
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())

пришлось добавить строку в waitkey (), если условие

  hog.setSVMDetector(None)
0 голосов
/ 01 апреля 2020

Это исходит из условия выхода while.

Попробуйте это: Приоритезируйте побитовую операцию и поставьте 33 вместо 1 на WaitingKey.

if (cv2.waitKey(33) & 0xFF) == ord('q'):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...