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)
Вот нашел . Помогло.
Друзья, подскажите, а можно с помощью этой библиотеке эмулировать веб-камеру (необходим функционал захвата изображения рабочего стола, типа 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)
Спасибо большое, очень внимаетльно просммотрел содержимое этого файла, но как Я понял это только класс для работы с этой библиотекой… примера так и не нашел.
Попробовал своими силами его одолеть, но пока без результатно… может найдется у вас пример для работы с этой библиотекой?
Ниже кидаю свой код(он не работает… такое чувство, что вылетает на инициализации т.к. ничего кроме консольного окна не наблюдаю):
#define LINUX #define USE_V4L2_LIB #define USE_OPENCV #include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> #include "camera_v4l2.h" int main(int argc, char *argv[]) { IplImage *pFrame; CameraV4L2 *pCapture; pCapture->init(); cvNamedWindow("Test",CV_WINDOW_AUTOSIZE); while (1) { pFrame=pCapture->getFrame(); cvShowImage("Test",pFrame); char key; key=cvWaitKey(33); if(key==27) break; } cvReleaseImage(&pFrame); cvDestroyWindow("Test"); return 0; }Ругается на 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
Погуглил, попробовал исправить, но все никак не уходит ошибка. Что делать?