Захватить видеопоток из FireWire - PullRequest
0 голосов
/ 22 октября 2011

Я пытаюсь передать видео с камеры (Sony HVR-Z1E) через FireWire на мой компьютер. Поступающие изображения / поток должны обрабатываться далее некоторыми функциями, которые ожидают формат CVMat (из openCV). Ну, теперь моя проблема в том, что я понятия не имею, как захватить поток. Хорошо, openCV 2.1 предлагает мне несколько методов (cvCapturefromCam), но независимо от того, какой параметр я ему даю, он всегда получает поток от веб-камеры ноутбука, а не от firewire. Я слышал, что мне нужно переключить основной кулачок в DirectShow API (с Windows SDK). Но на самом деле я тоже не знаю, как это сделать. Так какие-нибудь предложения, как это сделать?

Ответы [ 2 ]

0 голосов
/ 23 октября 2011

Несколько лет назад я сделал нечто подобное, используя DirectShow.Основным ограничением было то, что изображение, полученное с помощью DShow, было в стандартном разрешении PAL.Захват HD-изображения был невозможен (это была одна из первых HD-видеокамер от Sony, предназначенная для потребителей, точную модель сейчас не помню).Хорошая вещь была - этот метод не нуждался ни в чем, кроме простого DirectShow - никаких дополнительных драйверов и так далее.И это было ОЧЕНЬ быстро.

В общем, метод был примерно такой:

  • построение графика визуализации медиаданных (конечно, на этом этапе вы должны перечислять видеоустройства)
  • вставка в него пользовательского класса, унаследованного от ISampleGrabberCB.

Как это работает:

  • он использовал виртуальный метод BufferCB () из ISampleGrabberCB - который вы должны написать в своем унаследованном классе.
  • в упомянутомметод, вы должны оставить данные в глобальной структуре, а из основного потока - позаботиться о них.

Я знаю, это немного нечеткое описание, но я надеюсь, что вы найдете свою информацию (поиск в Google)для "ISampleGrabberCB" должна быть хорошая отправная точка, там должно быть много примеров кода).

0 голосов
/ 22 октября 2011

Смотрите мой соответствующий ответ здесь .OpenCV не может захватывать видео с камер Firewire изначально.Вам потребуется либо использовать драйвер CMU1394, либо драйвер Sony (если для него доступен SDK) для захвата видео с этой камеры, а затем передать его в OpenCV.

...