opencv 和 dlib 的视频滞后问题

Video lagging issue with opencv and dlib

我是新手,目前从事视频处理工作。我正在使用 Imutil 的 webcamvideostream 函数来捕获实时流和 dlib 的 get_frontal_face_detector() 函数的对象,因为 detector.I 正在使用 dlib 库检测面部标志。检测并获取面部特征后,我在生成每一帧之前对其进行处理。 这一切都运行了几秒钟,但一两分钟后,视频开始滞后,并随着时间的推移逐渐增加。

我已尝试通过线程中的 运行 进程尽量减少处理时间。我还降低了帧率和分辨率。我也试过跳帧,但这并没有产生流畅的视频。 当超过平均最短时间时,我在检测功能上设置了超时(这是唯一一个执行时间更长的功能)。 降低帧率和分辨率确实减少了滞后,但如果视频保持 运行 5 分钟,滞后又开始了。

如何解决这个滞后问题并获得长时间流畅的视频?

这是一个可能有用的结构。

def frame_pro(form_data=None):

### Making a webcam object by WebcamVideoStream and detector by get_frontal_face_detector()

while True:
    frame = camera.read()
    frame = imutils.resize(frame, width=600)

    ### Processing each frame

    ### yielding all frames in response after encoding

    yield (b'--frame\r\n'
            b'Content-Type: text/plain\r\n\r\n' + stringData + b'\r\n')

del camera
cv2.destroyAllWindows()


@app.route('/callp', methods=['POST', 'GET'])
def callp():
    if request.method in ['POST']:
        all_data = request.form.to_dict()
        return Response(frame_pro(all_data), mimetype='multipart/x-mixed-replace; boundary=frame')
    else:
        return Response(frame_pro(), mimetype='multipart/x-mixed-replace; boundary=frame')

在此先感谢您的帮助。

你可以参考这个话题Working with hundred thousand of pictures来减少dlib的处理时间。

但是,您的延迟问题在 "smooth" 分钟后开始出现(您说的是 5 分钟后),我对内存消耗管理有疑问。例如,在每次迭代之后,有一个数组变大并且永远不会被释放。您应该在此处 post 您的代码和注释,以便我们进一步提出建议。