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

时间:2018-05-05 09:05:20

标签: python raspberry-pi3 face-recognition

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

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

1 个答案:

答案 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()