Это мое первое кодирование при обработке изображений с использованием python и OpenCV. Мой первый проект использует веб-камеру для создания обнаружения движения человека и отображения его скорости ходьбы в режиме мониторинга в реальном времени, и теперь первым шагом я создал программу для обнаружения движения человека, но подача идет очень медленно, и результаты выходного видео очень быстро Например, я запускаю программу около 1 минуты, но длительность выходного видео составляет всего 7-10 секунд. Я не знаю, как это исправить, потому что я попробовал некоторые настройки, такие как изменение waitKey () и fps. Я использую методы HOG для обнаружения движения человека.
Примечание: я использую Logitech C270 с 30fps
, это моя программа:
import cv2
import numpy as np
import imutils
import time
#initialize the HOG descriptor/person detector
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
cv2.startWindowThread()
#open webcam video stream
cap = cv2.VideoCapture(1)
#output will be written to output.avi
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output_4.avi', fourcc, 18.0, (640,480))
frameCount = 0
start_time = time.time()
while(True):
#capture frame-by-frame
ret, frame = cap.read()
cv2.waitKey(30)
#resizing for faster detection
frame = cv2.resize(frame, (640,480))
#using a greyscale picture, also for faster detection
gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
#detect people in the image
boxes, weights = hog.detectMultiScale(frame, winStride=(8,8))
#returns the bounding boxes for the detected objects
boxes = np.array([[x, y, x+w, y+h] for (x,y,w,h) in boxes])
#final bounding boxes
for (xA, yA, xB, yB) in boxes:
cv2.rectangle(frame, (xA, yA), (xB, yB),
(0,255,0),2)
#write the output video
out.write(frame)
#display the resulting frame
cv2.imshow('Human Detection',frame)
if cv2.waitKey(30) & 0xFF == ord('q'):
break
#release the capture
cap.release()
#release the output
out.release()
#close the window
cv2.destroyAllWindows()
cv2.waitKey(30)
Спасибо. Я надеюсь, что вы можете мне помочь.