Оборудование предоставлено компанией 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”»
Качественно, фирмА!