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();
}
}
코드 설명
위 예제의 핵심 흐름은 다음과 같습니다.
System.loadLibrary()를 호출하여 OpenCV 네이티브 라이브러리를 로드합니다.Imgcodecs.imread()로 대상 이미지를Mat객체에 불러옵니다.RotatedRect객체로 타원의 중심 좌표, 크기(장축/단축), 회전 각도를 정의합니다.Scalar객체로 BGR 형식의 색상을 지정하고, 두께를Imgproc.FILLED로 설정한 뒤Imgproc.ellipse()를 호출합니다.imwrite()로 결과를 저장하고,HighGui.imshow()로 화면에 출력합니다.
실행 결과
위 프로그램을 실행하면 지정한 위치와 크기에 따라 어두운 회색(64, 64, 64)으로 채워진 타원이 그려진 이미지 창이 다음과 같이 표시됩니다.
