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개의 댓글