Как мне прочитать видеокамеру в программе win32 C - PullRequest
1 голос
/ 02 июня 2009

У меня есть эта USB-видеокамера для сада, и она поставляется с двумя мини-приложениями, одно из которых позволяет вам видеть то, что видит камера, и одно, которое записывает в файл .avi.

Но что за API, если я хочу получать изображения с камеры в моей собственной C-программе? Я делаю предположение, что (1) возможно и (2) желательно сделать некоторый вызов и заполнить двумерный массив информации о пикселях.

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

РЕДАКТИРОВАТЬ -

Имея здоровый опыт работы с Linux, я могу понять, как (в идеале / в теории) вы можете открыть () устройство, использовать ioctl () для его настройки и прочитать () данные. И я практически уверен, что Windows не представит API. Не зная, какие имена функций Windows может использовать для API-интерфейса видеоустройства, или даже если он у него есть, затрудняет поиск, по крайней мере, благодаря возможностям поиска Win32 API, которые есть в моем распоряжении.

Ответы [ 3 ]

1 голос
/ 02 июня 2009

Ваш первый шаг, как указал ChrisBD, это проверить, поддерживает ли Windows ваше устройство.

Если это так, у вас есть три возможных API-интерфейса Windows для захвата:

  • DirectShow
  • VFW . Более или менее был заменен DirectShow
  • MediaFoundation . Это новейший API, который предназначен для замены DirectShow. AFAIK еще не полностью реализован и доступен только в Vista.

Из трех DirectShow лучший выбор. Однако изучение и использование DirectShow не является тривиальной задачей. Отличный пример можно найти здесь .

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

1 голос
/ 02 июня 2009

Вероятно, вам понадобится DirectShow API, при условии, что именно так работает камера. Если производитель создал собственный путь к коду, вам понадобится его API.

0 голосов
/ 02 июня 2009

API - это путь.

Хорошим показателем того, требуется ли камера на заказ, является проверка того, распознается ли она ПК без установленных приложений производителя. Если в Windows есть встроенные драйверы, вы сможете использовать API-интерфейсы Windows для захвата изображений.

В качестве альтернативы, если вы знаете, какой кодек сжатия использовался для файла AVI, вы можете распаковать его.

В идеале было бы хорошо, если бы вы могли снимать видео в собственном (YUV, RGB15 или аналогичном) формате, поскольку тогда вы можете работать как со сжатием, так и с манипуляциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...