У меня есть сценарий, который я фиксирую часть и использую CV2 для обнаружения людей на экране. Работает нормально, но я не могу получить больше 2 FPS. Я тестировал на нескольких компьютерах и не видел, чтобы быть выпущенным в CPU.
import numpy as np
import cv2
from PIL import ImageGrab
from imutils.video import FPS
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
cv2.destroyAllWindows()
cv2.waitKey(1)
print("[INFO] sampling frames from webcam...")
fps = FPS().start()
while(True):
#tamanho da tela
printscreen_pil = ImageGrab.grab(bbox=(0,40,1024,768))
frame = np.array(printscreen_pil.getdata(),dtype='uint8')\
.reshape((printscreen_pil.size[1],printscreen_pil.size[0],3))
#coloca o video em preto e branco e cria a janela
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
boxes, weights = hog.detectMultiScale(frame, winStride=(8,8))
# Coloca o texto na tela
# cv2.putText(frame, "Slow Method", (10, 30),cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
boxes = np.array([[x, y, x + w, y + h] for (x, y, w, h) in boxes])
for (xA, yA, xB, yB) in boxes:
# display the detected boxes in the colour picture
cv2.rectangle(frame, (xA, yA), (xB, yB),
(255, 255, 255), 2)
cv2.imshow('window',frame)
fps.update()
if cv2.waitKey(1) & 0xFF == ord('q'):
break
fps.stop()
print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))