понедельник, 12 апреля 2010 г.
OpenCV. Hand detection
Обучил классификатор для обнаружения правой ладони человека. Добавил функционал для управления курсором.
воскресенье, 11 апреля 2010 г.
OpenCV. HaarClassifier
OpenCV. Обнаружение объектов. Haar-классификатор.
CascadeClassifier haar(face_cascade);
cvtColor(frame, gray, CV_BGR2GRAY);
- рисуем прямоугольник на изображении frame
#include <stdlib.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
/*
*
*/
int main(int argc, char** argv) {
Mat frame, gray;
string face_cascade = "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml";
CascadeClassifier haar(face_cascade);
VideoCapture cap(0);
namedWindow("Video", 1);
vector<Rect> objects;
while (true) {
cap >> frame;
cvtColor(frame, gray, CV_BGR2GRAY);
haar.detectMultiScale(gray, objects, 1.5, 16, 0, Size(32,32));
for (vector<Rect>::const_iterator r = objects.begin(); r != objects.end(); r++)
rectangle(frame, r->tl(), r->br(), Scalar(0, 0, 255));
imshow("Video", frame);
if (waitKey(33) >= 0) break;
}
return (EXIT_SUCCESS);
}
- создаем объект классификатора, в качестве параметра для конструктора используется имя файла xml-файла с описанием характеристик каскада
vector<Rect> objects;
- вектор прямоугольников, описывающих области с обнаруженными объектами
cvtColor(frame, gray, CV_BGR2GRAY);
- конвертируем цветное изображение в черно-белое
haar.detectMultiScale(gray, objects, 1.5, 16, 0, Size(32,32)); - ищем объекты на изображении gray и сохраняем объекты в вектор objects
- 1.5 - scale-параметр
- 16 - минимальное количество соседей
- 0 - флаги
- Size(32, 32) - минимальный размер подобласти, с которой начинается поиск объекта
rectangle(frame, r->tl(), r->br(), Scalar(0, 0, 255));
- рисуем прямоугольник на изображении frame
пятница, 9 апреля 2010 г.
OpenCV. Part 1.
OpenCV. Простое приложение.
- подключение пространства имен для OpenCV
- создаем объект изображения(на самом деле структура сложнее, но для первых программ и так сойдет:))
- захватываем изображение с камеры и сохраняем в объекте frame
Пример простого приложения, выводящего изображение с камеры.
#include <stdlib.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
/*
*
*/
int main(int argc, char** argv) {
Mat frame;
VideoCapture cap(0);
namedWindow("Video", 1);
while(true)
{
cap >> frame;
imshow("Video", frame);
if (waitKey(33) >= 0) break;
}
return (EXIT_SUCCESS);
}
#include <opencv/cv.h>
#include <opencv/highgui.h>
- заголовочные файлы для OpenCV
using namespace cv;
- подключение пространства имен для OpenCV
Mat frame;
- создаем объект изображения(на самом деле структура сложнее, но для первых программ и так сойдет:))
VideoCapture cap(0); - создаем объект для захвата видео с камеры
namedWindow("Video", 1);
- определяем именованное окно
cap >> frame;
- захватываем изображение с камеры и сохраняем в объекте frame
imshow("Video", frame);
- показываем изображение
if (waitKey(33) >= 0) break;
- в течение 33 миллисекунд ждем нажатия клавиши, если была нажата какая-нибудь клавиша, то выходим из цикла
Вот простой пример приложения, использующего библиотеку OpenCV. На его основе будем создавать более сложные приложения, но в следующий раз.
Удачи. :)
OpenCV. Introduction
OpenCV. Как и что ?
Во время исследований по моему диплому, связанному с распознаванием образов, на толкнулся на библиотеку OpenCV. Показалась довольно замечательной штукой. Но к сожалению документации по ней на русском языке весьма не густо, поэтому решил начать цикл статей по описанию работы с этой библиотекой. В качестве источника информации пока буду ограничиваться книгой "Learning OpenCV" и документацией по OpenCV с сайта opencv.willowgarage.com.
Подписаться на:
Сообщения (Atom)