Java용 OpenCV 라이브러리의 org.opencv.imgproc 패키지에는 Imgproc라는 클래스가 포함되어 있습니다. 이 클래스의 ellipse() 메서드를 호출하면 이미지 위에 타원을 간단하게 그릴 수 있습니다.
ellipse() 메서드의 매개변수
ellipse() 메서드는 다음과 같은 매개변수를 받습니다.
- Mat 객체 – 타원을 그릴 대상 이미지를 나타냅니다.
- RotatedRect 객체 – 이 사각형에 내접하는 형태로 타원이 그려집니다. 중심 좌표, 크기(Size), 회전 각도를 지정할 수 있습니다.
- Scalar 객체 – 타원의 색상을 나타내며, BGR(파랑, 초록, 빨강) 순서의 값으로 지정합니다.
- 정수(int) – 타원 선의 두께를 나타냅니다. 기본값은 1입니다.
예제 코드
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 DrawingEllipse {
public static void main(String args[]) {
// OpenCV 핵심 네이티브 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 소스 이미지를 Mat 객체로 읽어오기
Mat src = Imgcodecs.imread("D:\\images\\blank.jpg");
// 타원 그리기
RotatedRect box = new RotatedRect(new Point(300, 200), new Size(260, 180), 180);
Scalar color = new Scalar(64, 64, 64);
int thickness = 10;
Imgproc.ellipse(src, box, color, thickness);
// 이미지 저장 및 화면에 표시
Imgcodecs.imwrite("ellipse_output.jpg", src);
HighGui.imshow("Drawing an ellipse", src);
HighGui.waitKey();
}
}코드 설명
위 예제에서 RotatedRect 생성자는 세 가지 값을 받습니다. 첫 번째는 타원의 중심 좌표인 (300, 200), 두 번째는 타원의 가로·세로 크기를 정의하는 Size(260, 180), 세 번째는 회전 각도인 180도입니다. 색상은 Scalar(64, 64, 64)로 지정되어 어두운 회색 계열로 그려지며, 선 두께는 10픽셀로 설정했습니다.
실행 결과
프로그램을 실행하면 지정한 이미지 위에 타원이 그려진 결과 창이 아래와 같이 나타납니다.
