코드 12-1 영상의 레이블링 예제 [ch10/labeling]
01 void labeling_basic() 02 { 03 uchar data[] = { 04 0, 0, 1, 1, 0, 0, 0, 0, 05 1, 1, 1, 1, 0, 0, 1, 0, 06 1, 1, 1, 1, 0, 0, 0, 0, 07 0, 0, 0, 0, 0, 1, 1, 0, 08 0, 0, 0, 1, 1, 1, 1, 0, 09 0, 0, 0, 1, 0, 0, 1, 0, 10 0, 0, 1, 1, 1, 1, 1, 0, 11 0, 0, 0, 0, 0, 0, 0, 0, 12 }; 13 14 Mat src = Mat(8, 8, CV_8UC1, data) * 255; 15 16 Mat labels; 17 int cnt = connectedComponents(src, labels); 18 19 cout << "src:\n" << src << endl; 20 cout << "labels:\n" << labels << endl; 21 cout << "number of labels: " << cnt << endl; 22 }
• 3~14행 그림 12-2에서 예제로 사용했던 입력 영상과 동일한 형태의 그레이스케일 영상 src를 생성합니다. uchar 자료형 배열 data를 픽셀 데이터로 사용하는 임시 Mat 객체를 생성한 후, 모든 원소에 255를 곱한 결과 행렬을 src에 저장합니다.
• 16~17행 connectedComponents() 함수를 실행하고, 레이블 맵을 labels 행렬에 저장합니다.
• 19~21행 src, labels 행렬과 connectedComponents() 함수가 반환한 정수를 화면에 출력합니다.