我正在使用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)`
请问如何纠正?谢谢你的帮助。
答案 0 :(得分:1)
您应该使用线程来提高性能。 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()