#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
1 комментарий:
Зачем создал пост? Выложил бы классификатор обученный...
Отправить комментарий