树莓派3B+指南(九)解决帧率不足的问题

本文针对树莓派3B+在人脸识别跟踪时遇到的帧率不足问题进行探讨。通过尝试多进程、多核处理以提高效率,但受限于树莓派内存,逐帧处理仍会导致卡顿。解决方案包括选择性跳帧或逐帧处理,并总结了多进程操作中遇到的cv2.imshow()和cv2.imread()的限制以及Process和Queue的使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决帧率不足的问题

这个可能是我目前遇到最大的问题了,如果帧率很低,是没有办法满足人脸识别跟踪的。希望下面的方法可以有效解决这个问题。

查看网上资料,使用多进程,多核处理会快一些。

搞了好几天,终于搞出点眉目,但是因为树莓派的内存实在有限,如果逐帧处理,尽管用上了所有cpu资源,还是会很卡。所以有了以下的版本,可选择跳帧,可以选择逐帧。可以根据自己的需求更改。

import multiprocessing as mp
import cv2
import dlib

def detect_face(frame,value):
    img = frame
    dets = detector(img, 1)
    for index, face in enumerate(dets):
 
        left = face.left()
        top = face.top()
        right = face.right()
        bottom = face.bottom()

#因为如果没有检测到脸,上面四个变量是不存在的,
#会报出UnboundLocalError的错误,所以要处理一下。           
    try:
        value[:] = [left,top,right,bottom]
    except UnboundLocalError:
        value[:] = [0,0,0,0]

def draw_line(img,box):
    
    left = box[0]
    top = box[1]
    right = box[2]
    bottom = box[3]
    
#给传进来的img画框,并返回
    cv2.rectangle(img, (left*2, top*2), (right*2, bottom*2), (255, 0, 0), 1)
    return img
    
if __name__=='__main__':

#initial detector and cap
#树莓派的运行内存有限,所以要将采集的图片
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值