Оборудование для опытов с техническим зрением — web-камера Logitech HD Webcam C270


Оборудование предоставлено компанией Farnell, за что ей (и лично Ryan Gibson) большое спасибо!

Итак, мне в руки попала камера Logitech HD Webcam C270
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)
Кадр с Logitech C270
Выделение границ н кадре с Logitech C270

Как видите, программная часть существенно не изменилась и фактически является обёрткой вокруг тех же 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”»

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение