Обнаружение, когда лицо входит в ROI в OpenCV

У меня есть программа отслеживания лица, которая читает видео с камеры и рисует прямоугольник вокруг лица человека. Я хочу, чтобы программа распознала, когда лицо входит в определенную область кадра, и инициализировала какое-то другое действие. Какие команды мне понадобятся для этого? (Я использую C ++ и openCV 2.4.3)

Например

    detect face;
if (face is in ROI)
{
close video feed;
}

0

Решение

Таким образом, у вас есть прямоугольник, закрывающий ваше лицо, и прямоугольник, определяющий область интереса изображения. Чтобы проверить, входит ли лицо в область интереса, вам просто нужно проверить, пересекаются ли эти две стороны. Самый простой способ сделать это — использовать перегруженный оператор & cv :: Rect_ как описано здесь ( http://docs.opencv.org/modules/core/doc/basic_structures.html#rect ), а затем проверьте, является ли область полученного прямоугольника> 0.

Пример кода будет выглядеть следующим образом:

cv::Rect r1(0, 0, 10, 10);
cv::Rect r2(5, 5, 10, 10);
if ( (r1&r2).area() )
{
// rects intersect
}

Если вы хотите, чтобы грань вошла в область интереса с определенным процентом, вы можете сравнить область пересечения с минимальным значением обеих областей ввода:

cv::Rect r1(0, 0, 10, 10);
cv::Rect r2(5, 5, 10, 10);
double minFraction( 0.1 );
if ( (r1&r2).area() > minFraction * std::min(r1.area(), r2.area() ) )
{
// rects intersect by at least minFraction
}
4

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

Других решений пока нет …

По вопросам рекламы [email protected]