我用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/
您可以添加以下代码:
然后代替
cam = cv2.VideoCapture(0)
使用
cam = PiVideoStream().start()
而不是
ret, img = cam.read()
使用im = cam.read()
要释放相机,请使用:
^{pr2}$相关问题 更多 >
编程相关推荐