더북(TheBook)

OpenCV 라이브러리는 3.0.0 버전부터 레이블링 함수를 제공합니다. OpenCV에서 레이블링을 수행하는 기본적인 함수 이름은 connectedComponents()이고, 이 함수의 원형은 다음과 같습니다.

int connectedComponents(InputArray image, OutputArray labels,
        int connectivity = 8, int ltype = CV_32S);

image

입력 영상. CV_8UC1 또는 CV_8SC1

labels

출력 레이블 맵 행렬

connectivity

연결성. 8 또는 4를 지정할 수 있습니다.

ltype

출력 행렬 타입. CV_32S 또는 CV_16S를 지정할 수 있습니다.

반환값

레이블 개수. 반환값이 N이면 0부터 N-1까지의 레이블 번호가 존재하며, 이 중 0번 레이블은 배경을 나타냅니다. 실제 객체 개수는 N-1입니다.

 

connectedComponents() 함수는 입력 영상 image에 대해 레이블링을 수행하여 구한 레이블 맵 labels를 반환합니다. connectedComponents() 함수의 입력 image에는 보통 threshold() 또는 adaptiveThreshold() 등 함수를 통해 얻은 이진 영상을 지정합니다. 회색이 포함된 그레이스케일 영상을 입력으로 사용할 경우, 픽셀 값이 0이 아니면 객체 픽셀로 간주합니다. labels 인자에는 Mat 자료형의 변수 이름을 전달합니다. connectedComponents() 함수는 네 개의 인자를 받을 수 있지만, 뒤쪽 두 개의 인자는 기본값을 가지고 있어서 생략할 수 있습니다.

connectedComponents() 함수 사용법과 동작 결과를 확인하기 위한 예제 코드를 코드 12-1에 나타냈습니다. 코드 12-1의 labeling_basic() 함수는 앞서 그림 12-2에서 사용했던 8×8 크기의 입력 영상을 실제로 생성하여 레이블링을 수행하고, 그 결과를 확인합니다. labeling_basic() 함수가 정의된 소스 코드 파일은 내려받은 예제 파일 중 ch10/labeling 프로젝트에서 확인할 수 있습니다.

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