Java용 OpenCV 라이브러리의 org.opencv.imgproc 패키지에는 Imgproc 클래스가 포함되어 있습니다. 이 클래스는 resize(), warpAffine(), filter2D() 등 다양한 메서드를 제공하여 입력 이미지를 처리할 수 있게 해줍니다.
뿐만 아니라 Imgproc 클래스는 이미지 위에 기하학적 도형을 그릴 수 있는 메서드들도 함께 제공합니다. 주요 메서드는 다음과 같습니다.
| 도형 | 메서드 및 설명 |
|---|---|
| 타원(Ellipse) | ellipse() 메서드를 사용하여 이미지에 타원을 그릴 수 있습니다. |
| 원(Circle) | circle() 메서드를 사용하여 이미지에 원을 그릴 수 있습니다. |
| 사각형(Rectangle) | rectangle() 메서드를 사용하여 이미지에 사각형을 그릴 수 있습니다. |
| 다각형(Polygon) | fillPoly() 메서드를 사용하여 이미지에 다각형을 그리고 내부를 채울 수 있습니다. |
| 선(Line) | line() 메서드를 사용하여 이미지에 직선을 그릴 수 있습니다. |
예제 코드
다음 Java 예제는 빈 OpenCV 이미지 위에 다양한 기하학적 도형을 그리는 방법을 보여줍니다.
import java.util.ArrayList;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.RotatedRect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.highgui.HighGui;
public class DrawingGeometricalShapes {
public static void main(String args[]) {
// OpenCV 네이티브 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 이미지 파일 읽기
Mat src = Imgcodecs.imread("D:\\blank.jpg");
// 도형 색상 설정 (B, G, R)
Scalar color = new Scalar(0, 0, 120);
// 원 그리기
Imgproc.circle(src, new Point(75, 65), 40, color, Imgproc.FILLED);
// 타원 그리기
Imgproc.ellipse(src,
new RotatedRect(new Point(330, 60), new Size(100, 65), 180),
color, Imgproc.FILLED);
// 선 그리기
Imgproc.line(src, new Point(540, 30), new Point(540, 90), color, 5);
// 채워진 다각형 그리기
List<MatOfPoint> list = new ArrayList<>();
list.add(new MatOfPoint(
new Point(410, 60), new Point(430, 30),
new Point(470, 30), new Point(490, 60),
new Point(470, 100), new Point(430, 100))
);
Imgproc.fillPoly(src, list, color, 8);
// 사각형 그리기
Imgproc.rectangle(src, new Point(150, 30), new Point(250, 95),
color, Imgproc.FILLED);
// 결과 이미지 출력
HighGui.imshow("Geometrical shapes", src);
HighGui.waitKey();
}
}코드 설명
위 예제의 핵심 단계를 살펴보면 다음과 같습니다.
1. 라이브러리 로드: System.loadLibrary(Core.NATIVE_LIBRARY_NAME)을 호출하여 OpenCV 네이티브 라이브러리를 먼저 로드해야 합니다.
2. 색상 정의: Scalar 객체로 도형의 색상을 지정합니다. OpenCV는 BGR 순서를 사용하므로 (0, 0, 120)은 붉은색 계열을 의미합니다.
3. 도형 그리기: 각 도형별 메서드에 시작 좌표, 크기, 색상, 선 두께 등의 매개변수를 전달합니다. Imgproc.FILLED 상수를 사용하면 도형 내부가 색상으로 채워집니다.
4. 결과 확인: HighGui.imshow()로 결과 이미지를 화면에 표시하고, HighGui.waitKey()로 창이 닫히지 않도록 대기합니다.
실행 결과
프로그램을 실행하면 빈 이미지 위에 원, 타원, 선, 육각형 다각형, 사각형이 붉은색으로 채워져 그려진 것을 확인할 수 있습니다.
