Prerequisite : 윤곽선 길이 구하기
바운딩 트라이앵글
바운딩 트라이앵글(삼각형)이란 윤곽선을 외접하여 둘러싸는 가장 작은 삼각형을 의미한다. OpenCV에서는 minEnclosingTriangle라는 함수를 통해 바운딩 트라이앵글을 구할 수 있다.
Imgproc.minEnclosingTriangle(contour, triangle)
contour: 윤곽선 좌표
triangle: 함수 호출 후 참조할 삼각형 정보 (Mat타입)
minEnclosingTriangle 함수를 이용하여 이미지 내 도형을 감싸는 예제를 살펴보자.

예제코드:
val contours = ArrayList<MatOfPoint>()
val hierarchy = Mat()
// 윤곽선(도형) 정보 구하기
Imgproc.findContours(
binarySrc,
contours,
hierarchy,
Imgproc.RETR_TREE,
Imgproc.CHAIN_APPROX_SIMPLE
)
for (i in 0 until contours.size) {
// 삼각형 정보
val triangle = Mat()
// 바운딩 트라이앵글 구하기
Imgproc.minEnclosingTriangle(contours[i], triangle)
// 얻은 삼각형 꼭짓점 3개의 좌표를 기반으로 실선을 그어 삼각형을 만든다.
for(j in 0..2){
val x1 = triangle.get(j, 0)[0]
val y1 = triangle.get(j, 0)[1]
val point1 = Point(x1, y1)
val x2 = triangle.get((j+1)%3, 0)[0]
val y2 = triangle.get((j+1)%3, 0)[1]
val point2 = Point(x2, y2)
Imgproc.line(src, point1, point2, RED)
}
}
0개의 댓글