2012-12-20 37 views
0

我有一個臉部跟蹤程序,可以從相機中讀取視頻,並在人臉周圍繪製矩形。我想要做的是讓程序識別臉部何時進入框架的特定區域,並初始化其他一些動作。我需要執行哪些命令? (我使用C++和OpenCV 2.4.3)在opencv中檢測臉部何時進入ROI

E.g

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

回答

4

所以,你有一個長方形包圍你的臉和定義圖像的ROI的矩形。要檢查面部是否進入ROI,您只需檢查兩個面是否相交。做到這一點的最簡單的方法是如在此(http://docs.opencv.org/modules/core/doc/basic_structures.html#rect)描述使用重載操作者& CV :: 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 
}