【发布时间】:2022-01-19 08:52:24
【问题描述】:
请记住,我对编码非常陌生,发现这非常困难,但是我打开的 cv 代码运行速度非常慢,而且我检查了任务管理器,并且 CPU 的运行速度不到其最大使用量的 10%,所以它并不缺乏处理能力。 Haar_face.xml 只是 opencv 的 haar cascade frontal face 默认值。慢的事情是一,它启动真的很慢,二,它每五秒返回大约一帧,这太慢了,我不知道为什么。任何帮助表示赞赏。
import cv2 as cv
while True:
wcapture = cv.VideoCapture(0)
ret, frame = wcapture.read()
imgGray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
cv.destroyAllWindows()
face_haar = cv.CascadeClassifier('haar_face.xml')
faces_rect = face_haar.detectMultiScale(imgGray, scaleFactor=1.1, minNeighbors=3)
print({len(faces_rect)})
for (x,y,w,h) in faces_rect:
cv.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), thickness=2)
cv.imshow('Detected Faces', frame)
if cv.waitKey(1) & 0xFF==ord('d'):
break
wcapture.release()
cv.destroyAllWindows()
【问题讨论】:
-
请尝试将一些东西从while循环中取出。愿你只需要for循环,其他的都可以在外面。没有可重复的例子很难说。
-
您正在循环的每次迭代中创建一个新的
cv.VideoCapture实例。不确定占了多少执行时间,但如果将其移出应该会看到改进。 -
这正是问题所在,谢谢 frippe!
-
windows 上的 8% 可以是 12 核系统的一个完整 CPU 核。请澄清。