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)
    }
}

후원하기

카테고리: OpenCV

0개의 댓글

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.