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

2024-10-01 11:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

请问怎么纠正?谢谢你的帮助。在


Tags: theidimgreadconfrecordcv2face
1条回答
网友
1楼 · 发布于 2024-10-01 11:30:38

您应该使用线程来优化性能。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()

要释放相机,请使用:

^{pr2}$

相关问题 更多 >