CascadeClassifier 클래스를 이용하여 객체를 검출하려면 먼저 CascadeClassifier 객체를 생성해야 합니다. CascadeClassifier 객체는 단순히 CascadeClassifier 클래스 타입의 변수를 하나 선언하는 방식으로 생성할 수 있습니다. 다음은 CascadeClassifier 타입의 객체 classifier를 선언하는 예제 코드입니다.
CascadeClassifier classifier;
CascadeClassifier 객체를 생성한 후에는 미리 훈련된 분류기 정보를 불러올 수 있습니다. 분류기 정보는 XML 파일 형식으로 저장되어 있으며, CascadeClassifier::load() 멤버 함수를 이용하여 분류기 XML 파일을 불러올 수 있습니다. CascadeClassifier::load() 함수 원형은 다음과 같습니다.
void CascadeClassifier::load(const String& filename); |
|
• filename |
불러올 분류기 XML 파일 이름 |
만약 불러올 XML 파일이 프로그램 실행 폴더에 있다면 파일 이름만 CascadeClassifier::load() 함수 인자로 전달합니다. 만약 XML 파일이 다른 폴더에 있다면 상대 경로 또는 절대 경로 형태의 문자열을 filename 인자로 전달해야 합니다. 예를 들어 C 드라이브 최상위 폴더에 있는 face.xml 파일을 불러오려면 filename 인자에 “C:\\face.xml” 문자열을 전달해야 합니다.
OpenCV는 미리 훈련된 얼굴 검출, 눈 검출 등을 위한 분류기 XML 파일을 제공합니다. 이러한 미리 훈련된 분류기 XML 파일은 %OPENCV_DIR%\etc\haarcascades 폴더에서 찾을 수 있습니다.4 이 폴더에서 찾을 수 있는 XML 파일 이름과 검출 대상에 대한 설명을 표 13-2에 정리하였습니다. 하나의 검출 대상에 대해 서로 다른 방법으로 훈련된 여러 개의 XML 파일이 제공됩니다.
4 2장에서 설명한 OpenCV 설치 방법을 그대로 따랐다면 XML 파일은 C:\opencv\build\etc\haarcascades 폴더에서 찾을 수 있습니다.