roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 01:24

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 23 май 2011, 11:06 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Возникла следующая проблема:

Приобрел WiFi-IP камеру D-Link DCS-930 для дальнейшей установки ее на робота. Хочу с помощью ее тестировать алгоритмы EDV-а AVM да и вообще заниматься компьютерным зрением. Сама проблема состоит в том что ума не приложу как с нее получить видеопоток. Само видео можно как пользователю получить: зайти в ее админку 192.168.0.20 (к примеру. ip ее можно менять). В админке можно выбрать 2 метода получения видео:
1)activex
2)java приложение

Ранее не занимался ip камерами потому щас топчусь на месте. В гугле по запросу полно всякого мусора но по теме ничего не ншел. Пожалуйста подскажите если кто нибудь занимался этой темой куда копать.

ЗЫ: по ЯП в принципе разницы нет, но вообще остановился на C++ и хочу использовать библитеку OpenCV

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 23 май 2011, 11:25 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Говорят есть два метода:
However, the odds are quite good that your camera will have some way
to retrieve an MJPEG stream over HTTP via a well defined URL. So two
fairly straight forward ways to handle it are:

1. Supply the appropriate URL to cvCreateFileCapture, and then use
a loop with cvQueryFrame just like you would with other cameras.


This can also work with an MPEG4 feed (such as an rtsp:// URL) if
that's what your camera supports, though in general I would prefer
an MJPEG feed if given the option for image processing if you can
support the bandwidth.

Note that this approach is dependent on your OpenCV library having
been built with appropriate support for handling an MJPEG and/or
MPEG4 stream. I've had good luck under Linux but not so much under
Windows.

2. Just make your own connection to the camera at the supplied URL, and
decode the frames yourself, independent of OpenCV.

Most MJPEG feeds are just a series of JPEG images in a multipart
HTTP response, which are fairly easy to parse and decode using
whatever popular library you prefer for web retrieval and JPEG
decoding in your language and platform of choice. Once you have
any individual JPEG frame decoded, you can then convert it over to
an OpenCV IplImage (there was a recent thread on this list about
that) and proceed from there.

Trying to decode an MPEG4 stream would be much harder, and isn't
something I've attempted.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 23 май 2011, 11:31 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
А если попробовать подключить камеру через модуль RoboRealm: Control\Cameras\DLink_Internet_Camera?


Вложения:
DLink_camera.png
DLink_camera.png [ 53.21 КиБ | Просмотров: 15430 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 23 май 2011, 12:04 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
С RoboRealm получилось вывести видеопоток но есть один минус:
камера показывает со скоростью 1 кадр в 3 секунды (может просто я нормально не настроил или обновление изображения все просто с такой скоростью идет).

Все таки попробую как Dead советовал получить видеопоток. Позже отпишусь о результатах

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 23 май 2011, 12:29 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Так, а если выставить в поле “Refresh Freq” значение ASAP (As Soon As Possible)?
То есть – выводить изображение настолько быстро, насколько это возможно.


Вложения:
DLink_camera_Frq.png
DLink_camera_Frq.png [ 21.5 КиБ | Просмотров: 15297 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 23 май 2011, 12:34 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
При этом значении и тестировал - 1 кадр в 3 секунды. Если поставить в этом поле скорость >50 мс то еще медленнее кадры обновляются. На FAQ на сайте RoboRealm разработчики и пишут что этот модуль медленно работает с камерами. Потому сейчас вопрос задал на форуме dlink.

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 24 май 2011, 16:00 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
В общем отпишусь о промежуточных результатах:

Форум dlink мне абсолютно ничего не дал - там либо не хотят разглашать данную информацию, либо прикидываются...
Потоки я нашел, их формат следующий:
http://192.168.0.20/mjpeg.cgi - видео
http://192.168.0.20/audio.cgi - аудио
http://192.168.0.20/video.cgi - видео

http://192.168.0.20/image.jpg - скрин

Где 192.168.0.20 - ip камеры

Если на камере установлен логин/пароль то строки немного видоизменяются
http://логин:пароль@192.168.0.20/video.cgi

Теперь пытаюсь получить эти потоки в программе. OpenCV версии 1.1 начала поддерживать потоковый ввод с устройств. Пока проблема как раз в том что OpenCV не понимает формат mjpeg и ругается на кодек - но я работаю над этим

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 26 май 2011, 13:52 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
В общем самым простым решением для импорта потома с IP камеры оказалось:
Установка JPEG/DIRECTSHOW фильтра, после чего с камерой можно работать как с обычной USB WEB камерой.

Таковой фильтр можно и самому написать (что впоследствии при наличии свободного времени и сделаю), с можно установить уже готовый фильтр, например как:
http://www.webcamxp.com/download.aspx (IP Camera [JPEG/MJPEG] DirectShow Filter).

И в OpenCV обычным образом камеру инициализируем:
Код:
capture = cvCaptureFromCAM(2);//здесь 2 - это индекс вашей камеры в системе
if( !capture )
{
    fprintf(stderr,"Could not initialize capturing...\n");
    return -1;
}


Вложения:
Комментарий к файлу: Изображение с камеры
320_240.PNG
320_240.PNG [ 152.2 КиБ | Просмотров: 15263 ]
Комментарий к файлу: Настройки фильтра
filter.PNG
filter.PNG [ 29.14 КиБ | Просмотров: 15301 ]

_________________
if(!Operate) Read(pDatasheet);
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 26 май 2011, 16:37 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Ну а RoboRealm тоже работает через этот JPEG/DIRECTSHOW фильтр?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 26 май 2011, 20:10 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Фильтр в RoboRealm выдает не более 5 кадрос в секунду. В OpenCV выдает по максимуму

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 26 май 2011, 20:49 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
А если попробовать посмотреть свойства устройства видеозахвата (Options/Video Format)?
Возможно, там есть настройка, типа: «Частота кадров» :wink:


Вложения:
rr_options.PNG
rr_options.PNG [ 41.9 КиБ | Просмотров: 15271 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 26 май 2011, 21:32 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Если используется IP камера без DSHOW фильтра как есть то в списке камер ее нет - на нее же мы не устанавливаем драйвера, так как их просто нет. Но после установки фильтра уже появляется в списке - обычно по названию фильтра (типа IP Camera)

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 26 май 2011, 21:54 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Ну, вот я и хотел выяснить: если из диалогового окна RoboRealm вызвать окно “Options” в выпадающем списке “Camera” выбрать «IP Camera», а затем нажать на «Video Format», то возможно в свойствах этого устройства (IP Camera) есть настройка «Частота кадров».


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить видеопоток из IP-камеры?
СообщениеДобавлено: 26 май 2011, 22:22 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
В любои случае если чистую камеру подключить через RoboRealm то выдает до 5 кадров если еще и AVM Navigator запустить то еще медленне все. Потому я вышел из положения вышеописанным способом, где можно и частоту кадров менять

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO