더북(TheBook)

XML 파일을 정상적으로 불러왔다면 이제 CascadeClassifier::detectMultiScale() 멤버 함수를 이용하여 객체 검출을 실행할 수 있습니다. CascadeClassifier::detectMultiScale() 함수 원형은 다음과 같습니다.

void CascadeClassifier::detectMultiScale(InputArray image,
                         vector<Rect>& objects,
                         double scaleFactor = 1.1,
                         int minNeighbors = 3, int flags = 0,
                         Size minSize = Size(),
                         Size maxSize = Size());

image

입력 영상. CV_8U 깊이의 행렬

objects

(출력) 검출된 객체의 사각형 좌표 정보

scaleFactor

검색 윈도우 확대 비율. 1보다 커야 합니다.

minNeighbors

검출 영역으로 선택하기 위한 최소 검출 횟수

flags

현재 사용되지 않습니다.

minSize

검출할 객체의 최소 크기

maxSize

검출할 객체의 최대 크기

 

CascadeClassifier::detectMultiScale() 함수는 입력 영상 image에서 다양한 크기의 객체 사각형 영역을 검출합니다. 만약 입력 영상 image가 3채널 컬러 영상이면 함수 내부에서 그레이스케일 형식으로 변환하여 객체를 검출합니다. 각각의 사각형 영역 정보는 Rect 클래스를 이용하여 표현하고, vector<Rect> 타입의 인자 objects에 검출된 모든 사각형 정보가 저장됩니다. scaleFactor 인자는 검색 윈도우의 확대 비율을 지정합니다. CascadeClassifier::detectMultiScale() 함수는 다양한 크기의 얼굴을 검출하기 위하여 처음에는 작은 크기의 검색 윈도우를 이용하여 객체를 검출하고, 이후 scaleFactor 값의 비율로 검색 윈도우 크기를 확대시키면서 여러 번 객체를 검출합니다. minNeighbors 인자에는 검출할 객체 영역에서 얼마나 많은 사각형이 중복되어 검출되어야 최종적으로 객체 영역으로 설정할지를 지정합니다. minNeighbors 값을 기본값인 3으로 설정하면 검출된 사각형이 최소 세 개 이상 중첩되어야 최종적으로 객체 영역으로 판단합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.