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

OpenCV Java 라이브러리로 이미지에 기하학적 도형을 그리는 방법

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()로 창이 닫히지 않도록 대기합니다.

실행 결과

프로그램을 실행하면 빈 이미지 위에 원, 타원, 선, 육각형 다각형, 사각형이 붉은색으로 채워져 그려진 것을 확인할 수 있습니다.

OpenCV Java 라이브러리로 이미지에 기하학적 도형을 그리는 방법