Я знаю, что название немного расплывчато, но не знаю, как еще его описать.
CentOS с ffmpeg + OpenCV 2.4.9. Я работаю над простой системой обнаружения движения, которая использует поток с IP-камеры (h264).
Время от времени поток икает и выдает "плохой кадр" (см. Ссылку pic-bad.png ниже). Проблема в том, что эти кадры в значительной степени отличаются от предыдущих кадров и вызывают запуск события «движение», даже если фактического движения не произошло.
Изображения ниже поясняют проблему.
Хороший кадр (захвачено движение):
Плохой кадр (нет движения, просто сломанный кадр):
Плохой кадр ловится случайным образом. Я предполагаю, что могу сделать дефектный детектор кадров, анализируя (зацикливая) пиксели, идущие вниз из определенной позиции, чтобы увидеть, все ли они одинаковы, но мне интересно, есть ли другой, более эффективный, "по книге "подход к обнаружению плохих кадров такого типа и их пропуску.
Благодарю вас!
ИЗМЕНИТЬ ОБНОВЛЕНИЕ:
Кадр захватывается с помощью программы обнаружения движения C ++ через cvQueryFrame(camera);
, поэтому я не взаимодействую напрямую с ffmpeg, OpenCV делает это на бэкэнде. Я использую последнюю версию ffmpeg, скомпилированную из источника git. Все библиотеки также обновлены (h264 и т. Д., Все загружены и скомпилированы вчера). Данные поступают из потока RTSP (ffserver). Я тестировал несколько камер (модели dahua 1–3 МП), и сбой кадра довольно устойчивый для всех из них, хотя это происходит не постоянно, а только время от времени (например, один раз в 10 минут).