Оборудование предоставлено компанией Farnell, за что ей (и лично Ryan Gibson) большое спасибо!
Итак, мне в руки попала камера Logitech HD Webcam C270
* интерфейс USB 2.0
* встроенный микрофон
* длина кабеля — 1.5 м
Параметры изображения:
* Разрешение видео: 1280×720
* Интерполированное разрешение фотографий 3 млн пикс.
ОС
* Windows XP SP2/Vista/7
Поддерживает UVC (USB Video Class — USB Device Class Definition for Video Devices),
Device ID 046d:0825 Logitech HD Webcam C270
а следовательно должно без проблем работать под Linux (даже под OpenWRT на Wi-Fi-роутере D-Link DIR-320 )
Качество картинки с камеры заметно лучше, чем с более дешёвых веб-камер, которые я использовал до сих пор (например, почти незаметна дисторсия).
Что даёт надежду на возможность более надёжной и стабильной работы алгоритмов компьютерного зрения.
Посмотрим работу камеры под OpenCV через интерфейс С++.
// // тестирование видеозахвата OpenCV через интерфейс C++ // // https://robocraft.ru // #include "opencv2/opencv.hpp" int main(int argc, char* argv[]) { cv::VideoCapture cap(0); // откроем камеру по-умолчанию if(!cap.isOpened()) // успешно? { std::cout<<"[!] Error: cant open camera!"<<std::endl; return -1; } cv::Mat gray; cv::Mat edges; cv::namedWindow("frame"); cv::namedWindow("edges"); while(1) { cv::Mat frame; // у VideoCapture перегружен оператор >> ,который можно использовать для считывания кадра cap >> frame; // получаем новый кадр cv::imshow("frame", frame); // показываем картинку cv::cvtColor(frame, gray, CV_BGR2GRAY); // конвертируем в градации серого cv::GaussianBlur(gray, gray, cv::Size(7,7), 1.5, 1.5); // размытие (фильтром Гаусса) cv::Canny(gray, edges, 0, 30); // детектор границ Кенни cv::imshow("edges", edges); // показываем картинку int key = cv::waitKey(33); if(key == 27) //ESC break; else if(key == 13) // Enter { // сохраним кадр в файл cv::imwrite("frame.jpg", frame); cv::imwrite("edges.jpg", edges); std::cout<<"[i] Saved."<<std::endl; } } // камера будет автоматически освобождена в деструкторе VideoCapture return 0; }
скачать иcходник (ocv_capture.cpp)
Как видите, программная часть существенно не изменилась и фактически является обёрткой вокруг тех же Cи-шных функций.
bool VideoCapture::open(int device) { cap = cvCreateCameraCapture(device); return isOpened(); }
Одно из удобств C++ -го интерфейса в том, что не приходится заботиться об освобождении ресурсов, т.к. это осуществляется автоматически в деструкторах объектов.
продолжение следует…
Ссылки
Farnell
Logitech HD Webcam C270
http://ru.farnell.com/logitech
Linux UVC driver and tools
http://en.wikipedia.org/wiki/USB_video_device_class
0 комментариев на «“Оборудование для опытов с техническим зрением — web-камера Logitech HD Webcam C270”»
Качественно, фирмА!