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