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

Java OpenCV에서 이미지 표시하기: HighGui imshow() 메서드 활용법


OpenCV의 org.opencv.highgui 패키지에 포함된 HighGui 클래스는 윈도우(창)를 생성·조작하고 화면에 표시하는 기능을 제공합니다. Java에서는 C++의 cv::imshow()에 해당하는 기능을 이 클래스의 imshow() 메서드로 구현할 수 있으며, 이 메서드는 다음 두 가지 매개변수를 받습니다.

  • 윈도우의 이름을 나타내는 문자열 변수
  • 이미지 데이터를 담고 있는 Mat 객체

imshow()를 호출한 후에는 반드시 waitKey() 메서드를 함께 호출하는 것이 좋습니다. waitKey()는 키보드 입력을 기다리면서 윈도우 이벤트를 처리하는 역할을 하므로, 이를 생략하면 윈도우가 정상적으로 렌더링되지 않거나 프로그램이 즉시 종료될 수 있습니다.

예제 코드

다음 예제는 파일에서 이미지를 읽어 들인 후 그레이스케일로 변환하고, Canny 알고리즘으로 가장자리(edge)를 검출한 뒤, HighGui를 사용해 세 개의 이미지(원본, 그레이스케일, 가장자리 검출 결과)를 각각의 윈도우에 표시합니다.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class ImshowExample {
    public static void main(String args[]) {
        // OpenCV 핵심 네이티브 라이브러리 로드
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // 파일에서 이미지 읽기
        Mat src = Imgcodecs.imread("D://images//window.jpg");
        HighGui.imshow("Original Image", src);

        // 그레이스케일로 색상 변환
        Mat gray = new Mat(src.rows(), src.cols(), src.type());
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGB2GRAY);
        HighGui.imshow("Gray Scale Image", gray);

        // Canny 필터로 가장자리 검출
        Mat dst = new Mat(src.rows(), src.cols(), src.type());
        Imgproc.Canny(gray, dst, 100, 100*3);
        HighGui.imshow("Edges", dst);

        // 키 입력 대기 (윈도우 유지)
        HighGui.waitKey();
    }
}

실행 결과

위 프로그램을 실행하면 아래와 같이 세 개의 윈도우가 생성됩니다.

원본 이미지 −

Java OpenCV에서 이미지 표시하기: HighGui imshow() 메서드 활용법

그레이스케일 이미지 −

Java OpenCV에서 이미지 표시하기: HighGui imshow() 메서드 활용법

가장자리가 강조된 이미지 −

Java OpenCV에서 이미지 표시하기: HighGui imshow() 메서드 활용법