Java용 OpenCV 라이브러리의 org.opencv.imgproc 패키지에는 이미지 처리에 필요한 다양한 기능을 제공하는 Imgproc 클래스가 포함되어 있습니다.
이미지 위에 원을 그리려면 이 클래스의 circle() 메서드를 호출하면 됩니다. 이 메서드는 아래와 같은 매개변수를 받습니다.
원이 그려질 대상 이미지를 나타내는 Mat 객체
원의 중심 좌표를 나타내는 Point 객체
원의 반지름을 나타내는 정수(int) 값
원의 색상(BGR 형식)을 나타내는 Scalar 객체
원의 선 두께를 나타내는 정수(int) 값 (기본값: 1)
예제 코드
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DrawingCircle {
public static void main(String args[]) {
// OpenCV 핵심 네이티브 라이브러리 로드
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// 소스 이미지를 Mat 객체로 읽어오기
String file = "D:\\images\\blank.jpg";
Mat src = Imgcodecs.imread(file);
// 원 그리기
Point center = new Point(300, 200); // 원의 중심 좌표
int radius = 100; // 반지름
Scalar color = new Scalar(64, 64, 64); // BGR 색상
int thickness = 10; // 선 두께
Imgproc.circle(src, center, radius, color, thickness);
// 결과 이미지 저장 및 화면에 표시
Imgcodecs.imwrite("circle.jpg", src);
HighGui.imshow("Drawing a Circle", src);
HighGui.waitKey();
}
}코드 설명
위 예제 코드의 동작 흐름을 단계별로 살펴보면 다음과 같습니다.
1. 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME)을 호출하여 OpenCV의 네이티브 라이브러리를 먼저 로드해야 합니다. 이 과정이 없으면 OpenCV 관련 메서드 호출 시 오류가 발생합니다.
2. 이미지 불러오기
Imgcodecs.imread() 메서드를 사용하여 지정된 경로의 이미지 파일을 Mat 객체로 읽어옵니다. 이 Mat 객체가 원을 그릴 캔버스 역할을 합니다.
3. circle() 메서드로 원 그리기
중심 좌표(300, 200), 반지름 100, 회색 계열의 BGR 색상(64, 64, 64), 두께 10으로 설정한 후 Imgproc.circle()을 호출하여 원을 그립니다.
4. 결과 저장 및 출력
Imgcodecs.imwrite()로 결과 이미지를 파일로 저장하고, HighGui.imshow()로 화면에 표시합니다. 마지막으로 HighGui.waitKey()를 호출해 창이 바로 닫히지 않도록 유지합니다.
실행 결과
위 프로그램을 실행하면 빈 이미지 위에 지정한 위치와 크기대로 원이 그려진 결과가 새 창에 표시되며, 동일한 이미지가 circle.jpg 파일로 저장됩니다.
