2012-12-20 3 views
0

카메라에서 비디오를 읽고 사람 얼굴 주위에 직사각형을 그려주는 얼굴 추적 프로그램이 있습니다. 내가하고 싶은 것은 얼굴이 프레임의 특정 영역으로 들어갈 때 프로그램이 인식하게하고 다른 동작을 초기화하는 것입니다. 어떤 명령을 내릴 필요가 있습니까?얼굴이 opencv에서 ROI를 입력했을 때 감지

예컨대

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

답변

4

그래서 당신은 당신의 얼굴과 이미지의 ROI를 정의하는 사각형을 둘러싸는 사각형을 가지고 (I는 C++과 OpenCV의 2.4.3을 사용하고 있습니다). 얼굴이 ROI로 들어가는 지 확인하려면 두 개의 직사각형이 교차하는지 확인해야합니다. 이를 수행하는 가장 쉬운 방법은 여기에 설명 된대로 cv :: Rect_의 오버로드 된 연산자 &을 사용하고 결과 rect의 영역이> 0인지 확인하는 것입니다.

예제 코드는 다음과 같습니다. 당신은 얼굴이 일정 비율로 투자 수익 (ROI)를 입력하려면

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

, 당신은 모두 입력 영역의 minimun로 교차 영역을 비교할 수 있습니다

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 
} 
관련 문제