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

Java OpenCV에서 다각형 그리기: fillConvexPoly() 메서드 활용법

OpenCV에서 볼록 다각형(Concave Polygon) 그리기

모든 내각이 180도 미만인 다각형을 볼록 다각형(Convex Polygon)이라고 합니다. Java OpenCV 라이브러리의 org.opencv.imgproc 패키지에는 Imgproc라는 클래스가 포함되어 있으며, 다각형을 그리려면 이 클래스의 fillConvexPoly() 메서드를 호출하면 됩니다.

이 메서드는 다음과 같은 3개의 매개변수를 받습니다.

  • 다각형을 그릴 대상 이미지를 나타내는 Mat 객체
  • 다각형의 꼭짓점 좌표들을 담고 있는 MatOfPoint 객체
  • 다각형의 색상을 나타내는 Scalar 객체

예제 코드

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
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 DrawingConvexPolygon {
    public static void main(String args[]) {
        // OpenCV 코어 네이티브 라이브러리 로드
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // 소스 이미지를 Mat 객체로 읽어오기
        Mat src = Imgcodecs.imread("D:\\images\\blank.jpg");

        // 다각형을 구성할 꼭짓점 좌표 정의
        MatOfPoint points = new MatOfPoint(
            new Point(108, 71), new Point(232, 52),
            new Point(321, 161), new Point(269, 250),
            new Point(126, 232), new Point(108, 71)
        );

        // 다각형의 색상 설정
        Scalar color = new Scalar(64, 64, 64);

        // 볼록 다각형 그리기
        Imgproc.fillConvexPoly(src, points, color);

        // 결과 이미지 저장 및 화면에 표시
        Imgcodecs.imwrite("polygon_output.jpg", src);
        HighGui.imshow("다각형 그리기", src);
        HighGui.waitKey();
    }
}

실행 결과

위 프로그램을 실행하면 지정한 좌표를 꼭짓점으로 하는 회색 볼록 다각형이 이미지 위에 채워진 형태로 그려진 창이 표시됩니다.

Java OpenCV에서 다각형 그리기: fillConvexPoly() 메서드 활용법

핵심 포인트 정리

fillConvexPoly() 메서드는 이름 그대로 볼록 다각형만을 그릴 수 있습니다. 오목한 형태의 다각형을 그려야 한다면 polylines() 또는 fillPoly() 메서드를 사용하는 것이 좋습니다. 또한 꼭짓점 좌표는 시계 방향 또는 반시계 방향 순서대로 나열해야 올바른 형태의 다각형이 생성됩니다.