Перейти к содержимому
Compvision.ru
RinOS

Работа с камерами

Recommended Posts

Спасибо большое! А насчет тегов, при создании собщения не были активными различные параметры (жирность шрифта и прочее), не знаю причины.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос решен. После длительного "ковыряния" с OpenCV пришел к выводу, что для получения композитного сигнала с TV Tuner'a нужно опускаться до уровня DirectShow. Это новый уровень дзен для меня :) В этом направлении сейчас и разбираюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ещё вопрос: как в OpenCV узнать все режимы работы камеры?

Т.е. как для объекта CvCapture получить список доступных разрешений?

Неужели никто не знает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я делал через DirectShow на основе этой доки:

http://msdn.microsoft.com/en-us/library/ms787871.aspx
Код здесь: http://www.compvision.ru/forum/index.php?showtopic=582 Это не реализовывал, но думаю что это по теме:
http://msdn.microsoft.com/en-us/library/dd319784%28VS.85%29.aspx

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем спамибо, дело оказалось в шнуре...

Зато теперь новая напасть: беру кадры все с той же ip камеры Edimax, все тем же python'ом:

capture=highgui.cvCreateFileCapture('rtsp://192.168.1.100:554/ipcam.sdp.mjpg')

key=0

n=0

while key!='q':

        fr=highgui.cvQueryFrame(capture)

        highgui.cvShowImage('film',fr)

        key=highgui.cvWaitKey(1)

        time.sleep(1)

        n+=1

        print n

highgui.cvReleaseCapture(capture)

cv.cvReleaseImage(fr)

highgui.cvDestroyAllWindows()

На 37-м кадре программа зависает(зависает окно, показывающее кадры)

При этом capture!=None,задержку(sleep)делала разной: от отсутствующей до 3с.

Такое впечатление, что камера не хочет давать мне больше 37 кадров... мистика...(ну или как всегда руки:))

Подскажите, пожалуйста, что это может быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А параметр cvWaitKey не пробовали менять? Может быть что-то не успевает выводиться за 1 мс.

И еще интересно, количество получаемых до зависания кадров зависит от компьютера на котором запущена программа?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

От WaitKey не зависит(убирала). На другом компьютере тоже самое. 36/37 кадров - и зависает.

Работает с постоянным передергиванием после 35 кадра(ReleaseCapture->CreateCapture), но это совсем не дело... :(

Обновила программу камеры, вроде получилось. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скажите пожалуйста, а как узнать все видеорежимы, которые поддерживаются камерой? Например в виде frameWidthXframeHeight@Fps. Я вручную вбил с помощью cvSetCaprureProperty максимальный видеорежим и fps. Потом делаю захват и cvResize до нужного мне размера. Но вот если другую камеру подключить, то такого видеорежима может не оказаться и программа работать не будет. На ум приходит 2 варианта:

1) Проверять каким-то образом все штатные разрешения, например с помощью cvSetCaprureProperty повыставлять все возможные значения, потом дергнуть кадр, если не null, то есе ок, иначе дальше перебирать видеорежимы.

2) С помощью какой-нибудь функции связаться с драйвером камеры и получить список видеорежимов с fps и выбрать верхний(максимальный) - это было бы гораздо удобнее и не пришлось бы тыкаться пальцем в небо.

Подскажите, пожалуйста, кто как эту проблему решает.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По многочисленным просьбам написал программу для получения всех режимов всех камер системы:

post-1-0-70151300-1328022309_thumb.png

Исходник: CameraControl.rar

Можно еще так:

Configure the Video Output Format

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите как правильно работать с такими камерами, т.е. как например к ним подсоединиться и сгрузить картинку в разрешении 640*480 в черно-белом формате. В системе (WinXP SP2) стоит контроллер PCI OCHI IEEE 1394 (драйвера родные), к нему подцеплена камера. Родная программа с камерой работает, с OpenCV ничего не получается, пишет не видит камеру когда пытаюсь засунуть в инит IEEE 1394 вариант.

Заранее спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может отсюда драйвер взять?

http://www.cs.cmu.edu/~iwan/1394/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И снова беда с захватом изображения с ip камеры.

Камера d-link 903L, все тот же python2.6+opencv2.0+WinXP

С камеры Edimax захватывала так:

сapture=highgui.cvCreateFileCapture('rtsp://192.168.1.100:554/ipcam.sdp.mjpg')
Для d-link 930 доступ через /mjpeg.cgi (отсюда) Т.е. делаю захват:
capture=highgui.cvCreateFileCapture('http://192.168.1.100:80/mjpeg.cgi')
в итоге capture=none Пробовала предложенные варианты для jpg и mjpeg заглавными и нет, http/rtsp, приписать пользователя(пароля нет, писала:
http://admin@192.168...

),даже порт меняла. Безрезультатно...

Помогите, пожалуйста

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtsp://192.168.1.100:554/ipcam.sdp.mjpg
http://192.168.1.100:80/mjpeg.cgi

А в браузере это работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, в браузере четко. Прошу поток - дает поток, прошу картинку - картинку.

Только в браузере просит залогиниться. У предыдущей камеры(edimax)был логин-пароль, но opencv отдавал без них.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если так ?

http://192.168.1.100:80/mjpeg.cgi?.mjpg

И еще здесь похожая проблема:

http://opencv-users.1802565.n2.nabble.com/Getting-mjpeg-stream-from-IP-camera-td5782255.html

Что-то много у Вас разных IP-камер, солите вы их что-ли ? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто переборчивые мы)

Спасибо,но опять не выходит. Просто напасть какая-то.

Из ссылки поняла, что это могут быть проблемы с библиотекой.

попробую еще подоставать d-link'ов :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может отсюда драйвер взять?

http://www.cs.cmu.edu/~iwan/1394/

результат аналогичный-утилита нормально установилась, с демкой из утилиты камера работает, с OpenCV-тот же результат-не опознает...Какие есть предположения?

UPD:

сорри, возможно, просто не так инициализирую.В следующий раз попробую так

http://opencv.willowgarage.com/wiki/OpenCVAnd1394CMU.

Просто камера не каждый день доступна...

Да, кстати, такую странность заметил. Камера у меня по дефолту сидит в IEEE 1394 устройствах,а не в устройствах обработки изображения. Когда ставлю драйверы CMU, она перелезает в устройства обработки, но только до перезагрузки-т.е. после перезагрузки опять там же где и была, и даже CMU Demo ничего не находит. Это можно как-то вылечить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ой! Получилось, получилось!!!:)

'http://login:pass@host:port/mjpeg.cgi?.mjpg'

Ура! Спасибо!(то ли из-за того, что пароля не было - добавили, то ли я точку после ? ставить забывала...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

такая трабла: запускаю первый раз эту программу(ниже), все нормально. перезапускаю-видео тормозит(около 5к/с). чтобы все было опять нормально, запускаю vmcap(шла на диске с дровами), там меняю разрешение(на максиамльное, если на любое другое-не сработает), отключаю ее. теперь моя программа 1 раз поработает без тормозов. потом нужно опять повторять итерацию.

#include <highgui.h>

#include <cv.h>

int main()

{

CvCapture *capture = cvCreateCameraCapture(0); // Думаю тут всё понятно

if(capture == NULL) // Если камер не обнаружено - выходим

return 0;

IplImage *frame = NULL; // Кадр

cvNamedWindow("camera", CV_WINDOW_AUTOSIZE); // Окошко

while(1)

{

frame = cvQueryFrame(capture); // Получаем кадр, так же как и из видео файла

cvShowImage("camera", frame); // Выводим

char c = cvWaitKey(33); // Ждём

if(c == 27)break; // Если Esc - выходим

}

cvReleaseCapture(&capture);

return 0;

}

это пример работы с opencv.

как это лечится???

подчеркнутая строка - которая жрет много времени на втором этапе.

глюк и на debug, и на релизе(пишу в vs2010), opencv 2.3.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может на Mat перейти ? :)

img << capture;

(Может это глюк с - интерфейса)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуй после cvCreateCameraCapture задать максимальное разрешение захвата средствами OpenCV.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сегодня заглючило 1 раз из 10. странно, я комп вчера тоже перезагружал.думаю проблма в дровах.

не могу пока твой совет проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

чоткий совет, сработало, спасибо)

мне показалось, что днем работало нормально потому, что яркость достаточна. вечером изображение всегда плохое, нужно подкручивать вручную(видео тормозит при плохом освещении). и вот как то тут и глючит.

кстати как избавиться от тормозов при плохом освещении?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никак,насколько я знаю, надо покупать более дорогую камеру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×