Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java와 OpenCV로 이미지에 채워진 타원(Filled Ellipse) 그리기

Java OpenCV로 채워진 타원 그리기

Java용 OpenCV 라이브러리의 org.opencv.imgproc 패키지에는 Imgproc 클래스가 포함되어 있습니다. 이 클래스는 입력 이미지를 처리하는 다양한 메서드를 제공하며, 이미지 위에 기하학적 도형을 그릴 수 있는 메서드들도 함께 제공합니다.

이 클래스가 제공하는 ellipse() 메서드를 사용하면 이미지에 타원을 간단히 그릴 수 있습니다. 이 메서드의 변형 중 하나는 다음과 같은 요소들을 매개변수로 지정할 수 있습니다.

  • 타원을 그릴 대상 이미지를 나타내는 Mat 객체

  • RotatedRect 객체 — 타원은 이 회전 사각형에 내접하는 형태로 그려집니다.

  • 타원의 색상을 나타내는 Scalar 객체 (BGR 형식)

여기서 두께(thickness) 매개변수로 Imgproc.FILLED 값을 전달하면, 테두리만 있는 윤곽선이 아니라 내부가 가득 채워진 타원(filled ellipse)이 생성됩니다.

예제 코드

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.RotatedRect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class DrawingFilledEllipse {
    public static void main(String args[]) {
        // OpenCV 핵심 네이티브 라이브러리 로드
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // 원본 이미지를 Mat 객체로 읽어오기
        Mat src = Imgcodecs.imread("D:\\images\\blank.jpg");

        // 태원 그리기: 중심(300, 200), 크기 260x180, 회전 각도 180도
        RotatedRect box = new RotatedRect(new Point(300, 200), new Size(260, 180), 180);

        // 색상 지정 (BGR)
        Scalar color = new Scalar(64, 64, 64);

        // FILLED 옵션으로 내부가 채워진 타원 그리기
        int thickness = Imgproc.FILLED;
        Imgproc.ellipse(src, box, color, thickness);

        // 결과 이미지 저장 및 화면에 표시
        Imgcodecs.imwrite("filled_ellipse.jpg", src);
        HighGui.imshow("Drawing an ellipse", src);
        HighGui.waitKey();
    }
}

코드 설명

위 예제의 핵심 흐름은 다음과 같습니다.

  1. System.loadLibrary()를 호출하여 OpenCV 네이티브 라이브러리를 로드합니다.

  2. Imgcodecs.imread()로 대상 이미지를 Mat 객체에 불러옵니다.

  3. RotatedRect 객체로 타원의 중심 좌표, 크기(장축/단축), 회전 각도를 정의합니다.

  4. Scalar 객체로 BGR 형식의 색상을 지정하고, 두께를 Imgproc.FILLED로 설정한 뒤 Imgproc.ellipse()를 호출합니다.

  5. imwrite()로 결과를 저장하고, HighGui.imshow()로 화면에 출력합니다.

실행 결과

위 프로그램을 실행하면 지정한 위치와 크기에 따라 어두운 회색(64, 64, 64)으로 채워진 타원이 그려진 이미지 창이 다음과 같이 표시됩니다.

Java와 OpenCV로 이미지에 채워진 타원(Filled Ellipse) 그리기