我正在使用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()