解决帧率不足的问题
这个可能是我目前遇到最大的问题了,如果帧率很低,是没有办法满足人脸识别跟踪的。希望下面的方法可以有效解决这个问题。
查看网上资料,使用多进程,多核处理会快一些。
搞了好几天,终于搞出点眉目,但是因为树莓派的内存实在有限,如果逐帧处理,尽管用上了所有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