实时人脸识别在Raspberry Pi3上运行缓慢



我正在使用Raspberry Pi3进行人脸识别,这是我检测人脸的代码,但实时识别运行缓慢

cam = cv2.VideoCapture(0)
rec = cv2.face.LBPHFaceRecognizer_create();
rec.read(...'/data/recognizer/trainingData.yml')
getId = 0
font = cv2.FONT_HERSHEY_SIMPLEX
userId = 0
i = 0
while (cam.isOpened() and i<91):
i=i+1
ret, img = cam.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceDetect.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
getId, conf = rec.predict(gray[y:y + h, x:x + w])  # This will predict the id of the face
# print conf;
if conf < 50:
userId = getId
cv2.putText(img, "Detected", (x, y + h), font, 2, (0, 255, 0), 2)
record = Records.objects.get(id=userId)
record.is_present = True
record.save()
else:
cv2.putText(img, "Unknown", (x, y + h), font, 2, (0, 0, 255), 2)
# Printing that number below the face
# @Prams cam image, id, location,font style, color, stroke
cv2.imshow("Face", img)
cv2.waitKey(50)`

请问如何纠正?感谢您的帮助。

您应该使用线程来提升性能。 ImUtils 是一个库,可让您在 PiCamera 和网络摄像头捕获上使用线程。这里的问题是在帧之间执行的输入输出操作太多。

以下是帮助提高我的 fps 的文章: https://www.pyimagesearch.com/2015/12/28/increasing-raspberry-pi-fps-with-python-and-opencv/

这是您可以添加的代码:

import imutils
from imutils.video.pivideostream import PiVideoStream

然后而不是cam = cv2.VideoCapture(0)

使用cam = PiVideoStream().start()

而不是ret, img = cam.read()使用im = cam.read()

要释放相机使用:

cam.stop()

最新更新