Prerequisite : 윤곽선 길이 구하기

fitEllipse 함수

OpenCV에서는 fitEllipse라는 함수를 제공하는데, 이는 주어진 점들을 적당히 감싸는 타원 정보를 구할 수 있다.

Imgproc.fitEllipse(contour)

contour: 윤곽선 좌표
반환값: RotatedRect 타입의 타원 정보

fitEllipse와 함께 이미지 내 도형을 타원으로 적당히 감싸는 예제를 살펴보자.

예제코드:

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) {
    // 내부에서 사용하는 fitEllipseNoDirect 함수에서 최소 5개 이상의 정점을 요구한다.
    if (contours[i].rows() >= 5){
        val contour2f = MatOfPoint2f(*contours[i].toArray())
        // 도형을 감싸는 타원 정보 구하기
        val rotatedRect = Imgproc.fitEllipse(contour2f)
        // 타원 그리기
        Imgproc.ellipse(src, rotatedRect, RED)
    }
}
카테고리: OpenCV

0개의 댓글

답글 남기기

Avatar placeholder

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