1. OpenCV шаг за шагом. Введение.
2. Установка.
3. Hello World.
4. Загрузка картинки.
5. Вывод видео
6. Ползунок
7. Захват видео с камеры
8. Запись видео
9. События от мышки
10. Обработка изображения — сглаживание
11. Обработка изображения — изменение размеров
12. ROI — интересующая область изображения
13. Типы данных OpenCV
14. Матрица
15. Сохранение данных в XML
16. Генерация случайных чисел
17. Обработка изображения — морфологические преобразования
18. Обработка изображения — морфологические преобразования 2
19. Обработка изображения — заливка части изображения
20. Обработка изображения — альфа-смешивание
21. Обработка изображения — пороговое преобразование
22. Поиск объекта по цвету — RGB.
23. Поиск объекта по цвету. Цветовое пространство HSV.
24. Работа с камерой через библиотеку videoInput.
В шаге про захват видео с камеры я упомянул о том, что штатный захват не всегда срабатывает как нужно.
Например, он не хочет устанавливать частоту кадров.
Но под Windows есть замечательная библиотека videoInput, которая уже идёт в составе OpenCV, просто в OpenCV реализованы не все возможности этой библиотеки 😉
страничка библиотеки:
http://muonics.net/school/spring05/videoInput/
последняя версия — Version 0.1995 — Jan 2009 (35Mb — bin & src)
Можете скачать библиотеку или использовать файлы:
videoInput.h videoInput.lib
, которые идут вместе с OpenCV.
Для работы с библиотекой в своём проекте нам нужно прописать пути к директориям файлов библиотеки в настройках своей IDE.
Предположим, Вы скачали архив с библиотекой и распаковали его в удобное для Вас место, например:
c:\DevTools\videoInput\
Прописываем пути до заголовочного файла (videoInput.h) и файла библиотеки (videoInput.lib):
C:\DevTools\videoInput\compiledLib\compiledByVS2008\include\
и
c:\DevTools\videoInput\compiledLib\compiledByVS2008\
соответственно.
При попытке слинковать программу вероятна ошибка, что не найдена библиотека atlthunk.lib
Это решается указанием в свойствах проекта не линковать эту библиотеку.
Для этого нужно перейти
Project–>Properties–>Linker->Command Line
и вставить строчку:
/NODEFAULTLIB:"atlthunk"
Пример получения видео с помощью videoInput.
// // пример использования библиотеки видеозахвата videoInput // http://muonics.net/school/spring05/videoInput/ // // robocraft.ru // #include <cv.h> #include <highgui.h> #include <p> #ifdef _MSC_VER // подключение библиотек под MS VC # pragma comment(lib, "cxcore200.lib") # pragma comment(lib, "cv200.lib") # pragma comment(lib, "highgui200.lib") # pragma comment(lib, "videoInput.lib") #endif //#ifdef _MSC_VER IplImage* image = 0; int main(int argc, char* argv[]) { // создание объекта videoInput videoInput VI; // получение списка доступных видеоустройств, возвращается число устройств int numDevices = VI.listDevices(); int device1=0; // первое найденое видеоустройсво из списка // частота кадров VI.setIdealFramerate(device1, 15); // указываем разрешение VI.setupDevice(device1, 1280, 960, VI_COMPOSITE); //VI.showSettingsWindow(device1); // показать окошко настроек камеры // создаём картинку нужного размера image = cvCreateImage(cvSize(VI.getWidth(device1),VI.getHeight(device1)), IPL_DEPTH_8U, 3); cvNamedWindow("capture", CV_WINDOW_AUTOSIZE); while(1){ if (VI.isFrameNew(device1)){ // первый параметр - индекс видеоустройсва // второй - указатель на буфер для сохранения данных // третий - флаг, определяющий менять ли местами B и R -составляющий // четвёртый - флаг, определяющий поворачивать картинку или нет VI.getPixels(device1, (unsigned char *)image->imageData, false, true); // получение пикселей в BGR // // здесь уже можно работать с картинкой // с помощью функций OpenCV // // показываем картинку cvShowImage("capture", image); } char c = cvWaitKey(33); if (c == 27) { // ESC break; } } // освобождаем ресурсы cvReleaseImage(& image); cvDestroyWindow("capture"); // останавливаем видеозахват VI.stopDevice(device1); return 0; }
Вот и всё! Теперь, если штатными средствами захватить видео не получается — можете попробовать поработать через эту библиотеку 😉
далее: 25. Обработка изображения — свёртка.
Ссылки
http://muonics.net/school/spring05/videoInput/
http://opencv.willowgarage.com/wiki/DirectShow
16 комментариев на «“24. OpenCV шаг за шагом. Работа с камерой через библиотеку videoInput”»
шикарно помогло до этого использовал стандартные средства opencv либа пошла даже на visual studio 2010
Zdrustviute otlichnaya rabota o4en pomogla, u menya zada4a sdelat` iskajonnoe video(v real`noe vremya), to est` s effect krivogo zerkala v Opencv naprimer vot takoe:
http://www.myvido1.com/QTIpEVatWOmF2RNpXTw0UP_-
P.S. eto doljno bit v real`nom vremeni, pomogite pojaluisto kto 4e znaet, rada budu luboi informasii i ssilki
videoInput без пинков не пошел… (OpenCV 2.2 и VS2010)как пересобрать либу под VS2010 . Помогло.
Вот нашел
Друзья, подскажите, а можно с помощью этой библиотеке эмулировать веб-камеру (необходим функционал захвата изображения рабочего стола, типа ManyCam, VCam)?
Или каким средствами это сделать? Возможно, есть решение получше, чем писать драйвер.
библиотеки*
Всем привет!
подскажите плиз заинклудил библиотеку, скачал уже для VS2010 но при компиляции пишет ошибку
1>d:\project\opencv_helloworld\opencv_helloworld\opencv_helloworld\opencv_helloworld.cpp(1): warning C4627: ‘#include <cv.h>’: skipped when looking for precompiled header use
1> Add directive to ‘StdAfx.h’ or rebuild precompiled header
1>d:\project\opencv_helloworld\opencv_helloworld\opencv_helloworld\opencv_helloworld.cpp(2): warning C4627: ‘#include <highgui.h>’: skipped when looking for precompiled header use
1> Add directive to ‘StdAfx.h’ or rebuild precompiled header
1>d:\project\opencv_helloworld\opencv_helloworld\opencv_helloworld\opencv_helloworld.cpp(3): warning C4627: ‘#include <videoInput.h>’: skipped when looking for precompiled header use
1> Add directive to ‘StdAfx.h’ or rebuild precompiled header
1>d:\project\opencv_helloworld\opencv_helloworld\opencv_helloworld\opencv_helloworld.cpp(69): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add ‘#include «StdAfx.h»’ to your source?
1>
1>Build FAILED.
подскажите куда копать, VC советует инклудить stdafx, после чего ошибок.
Всем привет!
в общем удалось мне подгрузить библиотеку, но экран все равно серый 🙁
Здравствуйте! А не подскажете как настроить выбор каналов видео? У меня 4-х канальный оцифровщик, и OpenCV и VideoInput видят только первый канал, а мне нужно чтобы все 4?
Эта библиотека только под Windows? В Linux ее можно использовать? Стандартными средствами, в Linux, изменить частоту кадров не получается =(
под Linux нужно работать через v4l2 (Video4Linux)
пример
Спасибо большое, очень внимаетльно просммотрел содержимое этого файла, но как Я понял это только класс для работы с этой библиотекой… примера так и не нашел.
Попробовал своими силами его одолеть, но пока без результатно… может найдется у вас пример для работы с этой библиотекой?
Ниже кидаю свой код(он не работает… такое чувство, что вылетает на инициализации т.к. ничего кроме консольного окна не наблюдаю):
Ругается на VS2015 что не может открыть videoInput.lib хотя все сделано как в инструкции, что делать?
Нагитхабе выложен lib-файл только под VS2012.
Спасибо
Здравствуйте, вопрос, конечно, дурацкий, но куда указывать пути к файлам? Указал по аналогии с opencv, вроде все работает, но VS жалуется.
Выдает ошибку:
Ошибка LNK1112 тип компьютера модуля «X86» противоречит типу целевого компьютера «x64».
Файл:
c:\Users\User\documents\visual studio 2015\Projects\ConsoleApplication4\ConsoleApplication4\videoInput.lib(videoInput.obj) 1
Погуглил, попробовал исправить, но все никак не уходит ошибка. Что делать?