C++ 在opencv中检测人脸何时进入ROI

C++ 在opencv中检测人脸何时进入ROI,c++,opencv,roi,C++,Opencv,Roi,我有一个面部跟踪程序,可以从摄像机中读取视频,并在人脸周围画一个矩形。我想做的是让程序识别人脸何时进入帧的特定区域,并初始化其他动作。执行此操作需要哪些命令?(我使用C++和OpenCV 2.4.3)< /P> 例如 所以你有一个包围你的脸的矩形和一个定义图像ROI的矩形。要检查人脸是否进入ROI,只需检查两个矩形是否相交。最简单的方法是使用重载操作符&of cv::Rect_uu,如下所述(),然后检查结果Rect的面积是否大于0 示例代码如下所示: cv::Rect r1(0, 0, 10,

我有一个面部跟踪程序,可以从摄像机中读取视频,并在人脸周围画一个矩形。我想做的是让程序识别人脸何时进入帧的特定区域,并初始化其他动作。执行此操作需要哪些命令?(我使用C++和OpenCV 2.4.3)< /P> 例如


所以你有一个包围你的脸的矩形和一个定义图像ROI的矩形。要检查人脸是否进入ROI,只需检查两个矩形是否相交。最简单的方法是使用重载操作符&of cv::Rect_uu,如下所述(),然后检查结果Rect的面积是否大于0

示例代码如下所示:

cv::Rect r1(0, 0, 10, 10);
cv::Rect r2(5, 5, 10, 10);
if ( (r1&r2).area() )
{
    // rects intersect
}
如果希望人脸以一定百分比进入ROI,可以将相交区域与两个输入区域的最小值进行比较:

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
}

所以你有一个包围你的脸的矩形和一个定义图像ROI的矩形。要检查人脸是否进入ROI,只需检查两个矩形是否相交。最简单的方法是使用重载操作符&of cv::Rect_uu,如下所述(),然后检查结果Rect的面积是否大于0

示例代码如下所示:

cv::Rect r1(0, 0, 10, 10);
cv::Rect r2(5, 5, 10, 10);
if ( (r1&r2).area() )
{
    // rects intersect
}
如果希望人脸以一定百分比进入ROI,可以将相交区域与两个输入区域的最小值进行比较:

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
}