简体   繁体   English

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

[英]Real time face recognition ran slowly on Raspberry Pi3

I am using Raspberry Pi3 for face recognition and this is my code to detect the faces but the real time recognition ran slowly 我正在使用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)`

How to correct it please ? 请如何纠正? Thanks for your helping hand. 感谢您的帮助。

You should use threads to mazimize performance. 您应该使用线程来最大化性能。 imutils is a library that lets you use threading both on picamera and webcam capture. imutils是一个库,可让您在picamera和网络摄像头捕获上使用线程。 The issue here is that there are too many Input output operations being performed in between frames. 这里的问题是在帧之间执行太多的输入输出操作。

Here is the article that helped increase my fps: https://www.pyimagesearch.com/2015/12/28/increasing-raspberry-pi-fps-with-python-and-opencv/ 以下是有助于提高我的fps的文章: https : //www.pyimagesearch.com/2015/12/28/increasing-raspberry-pi-fps-with-python-and-opencv/

And this is the code you can add: 这是您可以添加的代码:

import imutils
from imutils.video.pivideostream import PiVideoStream

Then instead of cam = cv2.VideoCapture(0) 然后代替cam = cv2.VideoCapture(0)

use cam = PiVideoStream().start() 使用cam = PiVideoStream().start()

and instead of ret, img = cam.read() use im = cam.read() 而不是ret, img = cam.read()使用im = cam.read()

and to release the camera use: 并释放相机使用:

cam.stop()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM