Как работает cvHaarDetectObjects?

Я пытаюсь узнать, как работает cvHaarDetectObjects …
Я не мог представить, как это работает … как рассчитывается интегральное изображение и как найти лицо …

Мы помещаем прямоугольник в область лица … Как мы находим эту область?

if (faces)
{
for(int i = 0; i < faces->total; ++i)
{
CvPoint point1, point2;
CvRect* rectangle = (CvRect*)cvGetSeqElem(faces, i);
point1.x = rectangle->x;
point2.x = (rectangle->x + rectangle->width);
point1.y = rectangle->y;
point2.y = (rectangle->y + rectangle->height);
cvRectangle(frame, point1, point2, CV_RGB(255,0,0));...

0

Решение

Прочитайте эту вики-страницу,
http://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework

Есть известный алгоритм, называемый методом Виолы Джонса:
http://research.microsoft.com/en-us/um/people/viola/Pubs/Detect/violaJones_CVPR2001.pdf

Надеюсь, это поможет вам понять, как это работает.

2

Другие решения

Прямоугольник в библиотеке OpenCV состоит из двух углов, SO

point1.x = rectangle->x;
point2.x = (rectangle->x + rectangle->width);
point1.y = rectangle->y;
point2.y = (rectangle->y + rectangle->height);

от

CvRect* rectangle = (CvRect*)cvGetSeqElem(faces, i);

получает, где обнаруживает лицо, он использует эти координаты x и y, составляет с ними две необходимые точки (код выше), а затем рисует прямоугольник с точками в качестве аргументов:

cvRectangle(frame, point1, point2, CV_RGB(255,0,0));
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector