Обработка видео с вебки, с чего начать?
Вроде как Майкрософтовский Kinect позволит решить данную задачу с наименьшим геморроем, только вот можно ли у тебя заменить камеру им?
На винде получить поток картинок можно элементарно с помощью DirectShow. В юниксах есть его злой брат-близнец - GStreamer.
Если потребуется (быстрее писать, шустрее работает, прочий профит то перейти на Unix нет проблем =).
по опыту работы с DirectShow (весьма небольшому интуитивное решение - грабить бмп, анализировать его, перерисовывать бмп и выплёвывать его на вывод (с выделенным шариком) - будет тормозить жутко. Рекомендую копать в сторону фильтров DirectShow
мне проще работать с виндой
Тогда первые шаги такие:
1. Берем GraphEditPlus.
2. Строим такой вот граф:
Первый фильтр (камера, может называться иначе на другой машине) брать из списка Video Capture Sources, остальные - из списка DirectShow filters. Можно еще прежде, чем камеру с чем-то соединять, правой кнопкой кликнуть на выходной ее пин и вызвать SetFormat, там можно будет выбрать подходящий видеоформат, в котором получать картинки.
3. Построив граф, делаем File -> Generate code и видим исходник на С++ или С#, в котором строится такой граф, делаются необходимые вызовы по настройке форматов и заполняются всякие поля. Там можно большую часть кода по заполнению Format type поудалять, оставить лишь major type, subtype и разрешение.
4. Читаем про ISampleGrabber::SetCallback и ISampleGrabberCB::SampleCB, добавляем свой колбэк, который и будет для каждого кадра получать указатель на данные. Точнее, он будет получать указатель на media sample, у которого через GetBuffer можно получить указатель на сами данные. Их можно уже анализировать и можно менять сразу на месте, не копируя никуда. Формат данных будет определяться выбранным выше медиатипом.
а для линукса подобный конструктор имеется?
Я не встречал.
Оставить комментарий
uaha1979
Подключаем вебку к ПК, нужно ловить красный шарик на видео реалтайм.С чего начать? что читать? я вообще ничего не знаю (не как с картинки выделить шарик, ни как поймать поток в вебки)