begin0afresh Ответов: 2

Можно ли регулярно снимать кадры с помощью веб-камеры


Я ищу способ регулярно снимать быстро меняющиеся кадры с помощью общей веб-камеры.

Например, мой код pesudo
int fps = 0, oldT = 0, curT = 0;
while (1)
{
   fps++;

   std::cout << fps << " ";

   oldT = curT;
   while (curT - oldT < 50) // 50ms time delay
   {   curT = timeGetTime(); }

    //capturing code

}

Это означает, что веб-камера регулярно захватывает экран, на котором отображаются все увеличивающиеся цифры. Желаемые результаты-это регулярно снимаемые изображения, которые содержат увеличивающиеся числа.

Некоторые из результирующих изображений содержали одни и те же числа, а последовательность результирующих изображений пропускала некоторые числа, такие как

img1 - > 1
img2 - > 1 2
img3 - > 1 2 / / нежелательный результат- & gt; тот же номер
img4 - > 1 2 / / нежелательный результат- & gt; тот же номер
img5 - > 1 2 3 4 // нежелательный результат- & gt; пропуск номера
img6 - > 1 2 3 4 5
....

С плохим фоном я старался регулярно захватывать кадры. Однако сейчас я сомневаюсь, что это возможно с помощью веб-камеры.

Что я уже пробовал:

Я использовал либо то, либо другое видеозапись в openCV или ISampleGrabber в directshow однако я не могу получить желаемых результатов.

на мой взгляд, если эти нежелательные результаты обусловлены внутренними буферами камеры для кодирования, то нежелательные результаты регулярно представляются. Но ... я думаю, что нежелательные результаты нерегулярны.

пожалуйста, помогите мне..

2 Ответов

Рейтинг:
2

KarstenK

Некоторые веб-камеры не имеют такого мощного оборудования, поэтому в результате возникают ограничения. Попробуйте использовать более мощное оборудование или увеличьте интервал захвата.

Вы можете проверить результаты, сравнив изображения и отсортировав ненужные файлы. Простое решение может быть сравнивая размер файла (и или имена?).

Наконец вы делаете сравнение изображений как с библиотеками OpenCV как описано в этом разделе руководство.


begin0afresh

Как вы уже упоминали, если мне нужны изображения для разных чисел, сравнение изображений может быть успешным. Однако мне не нужны изображения для разных чисел,более конкретно, я хочу регулярный процесс захвата. Я попробую мощное оборудование. Спасибо за ваш ответ.

Рейтинг:
2

Dave Kreskowiak

Если вы говорите о том, чтобы смотреть на число в видеокадре на последовательных кадрах, да, вы получите пропущенные и повторяющиеся числа на соседних кадрах.

Windows не является операционной системой реального времени, поэтому таймеры не "тикают"на точных интервалах. Кроме того, нет никакого способа синхронизировать ваш таймер "частота кадров" с частотой кадров видео, которое вы снимаете с помощью веб-камеры.

Вы получите номера в вашем видео, которые отсутствуют, и номера, которые дублируются. То, что вы еще не видели в своем ограниченном тестировании, - это то, что вы получите "разрыв", число, которое меняется во время сканирования датчика веб-камеры.

Я предполагаю, что вы также делаете какое-то распознавание изображений, чтобы получить эти цифры. Вы не можете полагаться на какой-либо таймер или любую другую технику, основанную на времени, чтобы исправить вышеуказанные проблемы. Ваш код просто должен уметь обнаруживать и обрабатывать эти случаи в соответствии с вашими бизнес-правилами, какими бы они ни оказались. Что вы делаете в случае дубликата номера? Что вы делаете в случае пропущенного номера? Что вы делаете в случае, когда номер не был распознан как номер? Как вы обнаруживаете эти случайности?


begin0afresh

Если я не упоминал об этом выше, то уже видел разрывные цифры. Вы имеете в виду, что невозможно синхронизировать таймер "частота кадров" с частотой кадров видео? Спасибо за ответ.

Dave Kreskowiak

Как я уже сказал, Да.