roboforum.ru

Технический форум по робототехнике.

IP ethernet Camera+OpenCV

IP ethernet Camera+OpenCV

Tsi329 » 04 май 2012, 16:28

Данная инструкция объясняет как подружить IP камеру и OpenCV. В моем случае я использовал камеру D-link DCS-910 и OpenCV 2.4 (можно любой).
Рассказываю по шагам.
1. Настраиваем IP камеру через web-интерфейс. Проверяем, работает ли она там. Запоминаем ее IP.
2. Качаем и устанавливаем IP Camera [JPEG/MJPEG] DirectShow Filter http://www.webcamxp.com/download.aspx
3. Качаем и запускаем GraphStudio http://blog.monogram.sk/janos/tools/monogram-graphstudio/
4. Собираем граф как указано ниже:
Ashampoo_Snap_2012.05.04_14h53m11s_001_ttt-grf - MONOGRAM GraphStudio.png

5. Правой кнопкой на IP Camera и выбрать Properties. Здесь нужно настроить под вашу камеру: брэнд, модель, IP адрес, порт,
авторизация. Пара скользких моментов:
- моя камера не запускалась, если не указаны были данные авторизации. Даже если нет пароля на вход в камеру.
- в конце настроек необходимо обязательно нажать Save, а только потом OK. В противном случае все Ваши настройки не сохранятся.
Ashampoo_Snap_2012.05.04_14h55m13s_002_IP Camera -JPEG-MJPEG- Properties.png

6. Запускаем наш граф кнопкой play и любуемся в отдельном окне видео, которое шлет нам камера. Если изображение не появляется, то проверяйте настройки фильтра IP Camera. Или, что особенно бесит, перезапустите программу.
7. После того как вы увидели картинку с вашей камеры. Закрываем GraphStudio. Это важно. Я пол дня потерял не понимая почему не работает камера. И дальше работаем в VS 2008. Тут можно использовать любой из двух стандартных выводов картинки на экран. Оба они прекрасно описаны на сайте http://robocraft.ru.
- стандартными средствами OpenCV; http://robocraft.ru/blog/computervision/275.html
- через дополнительную библиотеку videoInput. http://robocraft.ru/blog/computervision/420.html

Какой бы метод не выбрали, необходимо внести в код маленькие доработки.
В первом случае:
Код: Выделить всёРазвернуть
CvCapture* capture = cvCreateCameraCapture(1); //CV_CAP_ANY);

Во втором случае при запуске консоли вашего приложения в самом начале будут указаны все найденные на компьютере источники видеопотока. Находим нашу камеру и видоизменяем код:
Код: Выделить всёРазвернуть
        // получение списка доступных видеоустройств, возвращается число устройств
        int numDevices = VI.listDevices();
        int device1=1; // номер по порядку выбранного Вами устройства -1.

У меня было так:
    VIDEOINPUT SPY MODE!
    SETUP: Looking For Capture Devices
    SETUP: 0) 1.3M WebCam
    SETUP: 1) IP Camera [JPEG/MJPEG]
    SETUP: 2) PS3Eye Camera
    SETUP: 3 Device(s) found

Наш фильтр под номером 2. Значит мне в коде необходимо использовать коэффициент 1.
Обращаю ваше внимание, что в списке есть так же PS3Eye камера, дрова которой я ставил ранее. Очень хорошая камера с сумасшедшим fps!

На этом все. Дальше вы работаете с вашей IP камерой, как с обычной USB-камерой, которую, уверен, уже подключали ранее.


Rambler\'s Top100 Mail.ru counter