Проблема с задержкой видео в opencv и dlib - PullRequest
0 голосов
/ 14 мая 2019

Я новичок, и в настоящее время я работаю над обработкой видео.Я использую функцию 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')

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 15 мая 2019

Вы можете обратиться к этой теме Работа с сотнями тысяч картинок , чтобы сократить время обработки dlib.

Однако ваша запаздывающая проблема начинает возникать через несколько "плавных" минут (вы сказали, что через 5 минут), у меня есть сомнения по поводу управления потреблением памяти.Например, после каждой итерации существует массив, который становится больше и никогда не будет освобожден.Вы должны опубликовать свой код с комментариями здесь, чтобы мы могли предложить дальше.

...