더북(TheBook)

12.2.2 외곽선 처리 함수

이 절에서는 객체의 외곽선 검출 후 외곽선 좌표 정보를 이용하는 여러 OpenCV 함수 사용법에 대해 알아보겠습니다. 그리고 이들 함수로부터 얻은 정보를 이용하여 객체의 모양을 판단하는 예제 프로그램을 만들어 보겠습니다.

먼저 검출한 외곽선 정보로부터 객체의 위치와 크기 등 정보를 알아낼 수 있는 몇 가지 방법에 대해 알아보겠습니다. 주어진 외곽선 점들을 감싸는 가장 작은 크기의 사각형, 즉 바운딩 박스를 구하고 싶다면 boundingRect() 함수를 사용합니다.

Rect boundingRect(InputArray points);

points

입력 점들의 집합. vector<Point> 또는 Mat 타입

반환값

입력 점들을 감싸는 최소 크기의 사각형

 

특정 객체의 바운딩 박스는 connectComponentsWithStats() 함수를 이용해서도 구할 수 있습니다. 다만 이미 외곽선 정보를 가지고 있는 경우에는 boundingRect() 함수를 이용하여 바운딩 박스를 구하는 것이 효율적입니다.

외곽선 또는 점들을 감싸는 최소 크기의 회전된 사각형을 구하고 싶을 때에는 minAreaRect() 함수를 사용합니다. minAreaRect() 함수는 함수 이름에서 알 수 있듯이 특정 외곽선을 감싸는 가장 작은 면적의 사각형 정보를 반환하는 함수이며, RotatedRect 클래스 객체를 반환합니다. minAreaRect() 함수 원형은 다음과 같습니다.

RotatedRect minAreaRect(InputArray points);

points

입력 점들의 집합. vector<Point> 또는 Mat 타입

반환값

입력 점들을 감싸는 최소 크기의 회전된 사각형

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