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

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

Recommended Posts

У тебя установлен k-lite codeck pack? С ним ставится graphstudio.exe. Попробуй через неё захватить и вывести видео. Получилось? Значит, через OpenCV тоже должно (graphstudio работает через DirectShow). Если там получается, а в OpenCV нет, то надо в отладчике смотреть как внутри производится захват.

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


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

Здравствуйте.

Случайно наткнулся на интересующую меня тему: “Захват видео в потоке”

http://roboforum.ru/forum51/topic9490.html

отписался автору, на данную тему, в последних топиках.

В общем, ответа не последовало. Посему, прошу Вас обсудить данную тему.

Вот собственно вопрос автора:

Здравствуйте уважаемые.

Вопрос короткий и по существу:

Имеется скажем 2, 3 или 4 камеры, необходимо работать с каждой в своем потоке.

Кто решал подобный вопрос, как реализовать многопоточность ?

Спасибо.

С уважением, Антон.

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


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

Какой язык, какая ОС? На мой вкус, boost::thread один из самых удобных кросплатформенных вариантов для С++.

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


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

Набросал небольшой класс для управления свойствами камеры.

Я тестировал на Logitech C905, пробовал управлять фокусом.Вроде все работает.

Документацию встроил в заголовочник.

Параметры, которыми можно управлять, если это поддерживается камерой, перечислены здесь:

MSDN

CameraControlUtils.rar

  • Like 1

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


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

Ссылку на MSDN надо немного поправить.

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


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

Спасибо, поправил.

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


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

Есть такая камера. Она принимает видео через PCIe фреймграббер. К ней есть свой SDK, естественно, но хочется юзать давно знакомый оpencv. Можно ли прикрутить opencv к посторонней камере и как это сделать?

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


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

Надо узнать, какие драйвера она использует. Если DirectShow, то можно и через OpenCV.

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


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

Какой язык, какая ОС? На мой вкус, boost::thread один из самых удобных кросплатформенных вариантов для С++.

wxWidgets Windows/Unix, предполагается использовать wxThread.

У кого возникали проблемы со склейкой изображений с нескольких камер? Или лучше отрисовывать на компонентах?

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


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

много потоков -накладные расходы на потоки.

все в одно изображение - накладные расходы на копирование.

что быстрее хз, без потоков легче писать код.

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


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

что быстрее хз, без потоков легче писать код.

Ну по принципу да, всеравно многопоточность проявится как я понимаю только на многопроцессорных системах

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


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

Есть смысл сделать два потока: поток пользовательского интерфейса и поток захвата.

Это полезно сделать и на однопроцессорной системе.

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


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

Не нашел подобную тему, поэтому создаю.

Опишу несколько моделей с которыми я работал:

1)самая дешевая модель от a4tech, модель не помню.

Отличалась от всех другим тем, что имела встроенную ик подсветку и не имела ик фильтра. возможна съемка в темноте. цвета сильно искажаются из-за отсутствия ик фильтра.

2) Hercules Classic Link

Дешовая камера от геркулес. В свое время никак не удалось заставить ее работать с опенсв. Пробовал стандартными средствами и через библиотеку videoinput

3) Hercules Deluxe Optical Glass

Эта камера мне понравилась. Качество картинки хорошее для этого ценового уровня. При среднем освешении выдает свои 30фпс при разрешении 640*480. Ик фильтр при необходимости легко убирается. Рекомендую как дешевый вариант.

4) Microsoft LifeCam Studio

Камера с разрешением 1920*1080, качество картинки отличное. В опенсв работает нормально. Для меня основным недостатком было - сильная нагрузка на процессор даже при разрешении 640*480 - феном х6(6 ядер) грузился на 20-30 процентов при обычном выводе видео на экран из программы работы с камерой.

Порадовало наличие автофокуса, в драйвере его можно вручную настроить.

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

Опишите какие плюсы и минусы ваших камер. Интересует Logitech C910, насколько она требовательна к процессору при работе.

Планирую купить пару камер для 3д реконструкции. На какие параметры следует обратить внимание? две камеры одной модели нормально работают на одном компе?

  • Like 1

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


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

Я беру видео с ip камер или плат захвата. Вебки как-то не прижились.

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


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

У меня были две одинаковые вебки от sony 2001 года выпуска, и они никак не хотели вместе работать, работала только та, которую первую подключили. Так что, тут не угадаешь, какие две будут работать, а какие нет.

В итоге купил вот такую камеру:

http://roboforum.ru/forum36/topic1350-45.html#p214256

Вообще я в камерах совсем не разбираюсь, даже не знал, что в некоторых бывает ик-фильтр.

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


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

Вообще я в камерах совсем не разбираюсь, даже не знал, что в некоторых бывает ик-фильтр.

Ик фильтр есть почти во всех камерах. его нет только в тех, которые сделаны для ночной съемки.

За ссылку спасибо.

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


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

Подскажите пожалуйста, имеется веб-камера с максимальным разрешением в 5Мп, как используя OpenCV получить снимок с максимальным разрешением веб-камеры. Функция QueryFrame() дает снимки с разрешением видеопотока.

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


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

Попробовал построить граф в graphstudio для своей web-камеры. Отдельный кадр большого разрешения получить не удалось. Скорее всего, OpenCV тоже не сможет.

post-391-0-86320900-1319471378_thumb.png

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


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

Кто-нибудь знает, как получить доступ к IP-камере в OpenCV 2.3.0? Пробовал таким способом:

	CvCapture *pCapture = cvCreateFileCapture("http://192.168.1.17:80/video1.mjpg");

	if (pCapture != NULL)

	{

		int nFrameWidth = cvGetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_WIDTH);

		int nFrameHeight = cvGetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_HEIGHT);

		IplImage *pImg = cvCreateImage(cvSize(nFrameWidth, nFrameHeight), IPL_DEPTH_8U, 3);

		cvNamedWindow("cam view");

		while (true)

		{

			pImg = cvQueryFrame(pCapture);

			cvShowImage("cam view", pImg);

		}

		cvDestroyWindow("cam view");

		cvReleaseImage(&pImg);

		cvReleaseCapture(&pCapture);

	}

В окне cam view ничего не показывается, хотя под отладчиком проверял значение pImg и оно не нулевое.

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


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

*pImg не нулевое, так как было инициализировано:

IplImage *pImg = cvCreateImage(cvSize(nFrameWidth, nFrameHeight), IPL_DEPTH_8U, 3);

что не обязательно.

Вы лучше проверьте pCapture.

Может еще проблема со слешами в адресе.

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


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

Вы лучше проверьте pCapture.

Может еще проблема со слешами в адресе.

Я проверяю во второй сроке:

	if (pCapture != NULL)
Или нужно как-то по-другому? Кстати заметил, что вызов cvCreateFileCapture занимает очень много времени. Если подождать, то выполнение всё-таки проходит дальше. При этом в консоль выводятся сообщения типа:
[mjpeg @ 00b91800]Estimating duration from bitrate, this may be inaccurate

[mjpeg @ 00d53fc0]Estimating duration from bitrate, this may be inaccurate

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


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

Да, if (pCapture != NULL) я пропустил.

У меня камера открывается таким адресом:

http://login:password@192.168.1.9/GetData.cgi?.mjpg
Порт там не указан, зато есть логин и пароль. Может попробовать что то типа:
http://192.168.1.9/GetData.cgi?.mjpg

Причем, если посмотреть на Ваш адрес, то там тоже есть ':', но оно отделяет адрес от порта, может он адрес логином считает? :) (Это домыслы, пробовать лень)

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


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

В общем суть проблемы я так и не понял, но похоже, что дело не в камере. Сделал запись кадров в файл вместо вывода в окно и наконец-то увидел изображение с камеры:

	CvCapture *pCapture = cvCreateFileCapture("http://192.168.1.17:80/video1.mjpg");

	if (pCapture != NULL)

	{

		IplImage *pImg = NULL;

		int i = 0;

		char filename[20];

		while (true)

		{

			pImg = cvQueryFrame(pCapture);

			sprintf(filename, "frame%i.jpg", i++);

			cvSaveImage(filename, pImg);

		}

		cvReleaseImage(&pImg);

		cvReleaseCapture(&pCapture);

	}

Почему через cvShowImage не выводится в окно - для меня загадка.

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


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

А для меня - нет. См. функцию cvWaitKey.

  • Like 1

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×