Я новичок, и в настоящее время я работаю над обработкой видео.Я использую функцию webcamvideostream Imutil для захвата живого потока и объект функции dlib get_frontal_face_detector () в качестве детектора. Я определяю ориентир лица с помощью библиотеки 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')
Заранее спасибо за помощь.