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 您的代码和注释,以便我们进一步提出建议。
我是新手,目前从事视频处理工作。我正在使用 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 您的代码和注释,以便我们进一步提出建议。