더북(TheBook)

일단 위에 적힌 파일이 모두 준비되었다면 이제 OpenCV에서 이 파일을 이용하여 영상을 인식하는 예제 프로그램 작성 방법에 대해 알아보겠습니다.

먼저 readNet() 함수를 이용하여 Net 객체를 생성하는 소스 코드를 살펴보겠습니다. readNet() 함수 인자로 모델 파일 이름과 구성 파일 이름을 순서대로 전달하면 Net 클래스 객체가 생성됩니다.

Net net = readNet("bvlc_googlenet.caffemodel", "deploy.prototxt");

앞 소스 코드에서 사용한 bvlc_googlenet.caffemodel 파일과 deploy.prototxt 파일은 프로그램 실행 폴더에 함께 있어야 합니다.

그다음은 각 클래스 이름이 적혀 있는 텍스트 파일로부터 각 클래스 이름을 불러와 vector<String> 타입의 변수에 저장하는 코드를 살펴보겠습니다.

ifstream fp("classification_classes_ILSVRC2012.txt");
 
vector<String> classNames;
string name;
while (!fp.eof()) {
  getline(fp, name);
  classNames.push_back(name);
}
 
fp.close();

앞 소스 코드에서는 std::ifstream 클래스를 이용하여 classification_classes_ILSVRC2012.txt 텍스트 파일을 열어서 한 줄씩 읽고, 각 줄에 적혀 있는 문자열을 classNames라는 문자열 벡터에 추가합니다. 앞 코드가 실행되면 classNames 벡터에는 모두 1000개의 문자열이 저장됩니다.

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