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

Java OpenCV 라이브러리로 컬러 이미지를 회색조(그레이스케일)로 변환하는 방법

OpenCV에서 컬러 이미지를 회색조(그레이스케일)로 변환하는 작업은 생각보다 간단합니다. 핵심은 Imgproc 클래스가 제공하는 cvtColor() 메서드입니다. 이 메서드는 이미지의 색상 공간을 다른 형태로 변환해 주는 역할을 하며, 다음과 같은 세 가지 매개변수를 받습니다.

  • src − 원본 이미지를 나타내는 Matrix(Mat) 객체입니다.

  • dst − 변환 결과가 저장될 대상 이미지를 나타내는 Matrix(Mat) 객체입니다.

  • code − 변환할 색상 공간의 종류를 나타내는 정수 값입니다.

컬러 이미지를 회색조로 변환하려면 세 번째 매개변수에 Imgproc.COLOR_RGB2GRAY를 전달하면 됩니다. 이 코드는 RGB 색상 공간을 회색조로 변환하도록 지정하는 상수입니다.

예제 코드

아래는 Java OpenCV를 사용해 컬러 이미지를 회색조로 변환하고 결과를 파일로 저장하는 전체 예제입니다.

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

public class ColorToGrayscale {
   public static void main(String args[]) throws Exception {
      // OpenCV 핵심 네이티브 라이브러리 로드
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      // 원본 이미지 읽기
      Mat src = Imgcodecs.imread("spiderman.jpg");
      // 결과를 담을 빈 Mat 객체 생성
      Mat dst = new Mat();
      // 이미지를 회색조로 변환
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2GRAY);
      // Imgcodecs 클래스 인스턴스 생성
      Imgcodecs imageCodecs = new Imgcodecs();
      // 변환된 이미지 저장
      imageCodecs.imwrite("colortogreyscale.jpg", dst);
      System.out.println("Image Saved");
   }
}

코드 설명

위 예제의 실행 흐름을 단계별로 살펴보면 다음과 같습니다.

먼저 System.loadLibrary()를 호출하여 OpenCV의 네이티브 라이브러리를 로드합니다. 이 과정이 없으면 OpenCV 관련 기능을 사용할 수 없습니다. 다음으로 Imgcodecs.imread() 메서드를 통해 디스크에 있는 컬러 이미지를 Mat 객체로 읽어 들입니다. 이어서 변환 결과를 저장할 빈 Mat 객체를 생성한 뒤, cvtColor() 메서드에 원본 이미지, 대상 이미지, 변환 코드(COLOR_RGB2GRAY)를 순서대로 전달하여 회색조 변환을 수행합니다. 마지막으로 imwrite() 메서드를 사용해 변환된 이미지를 지정한 파일명으로 저장하면 작업이 완료됩니다.

입력 이미지

Java OpenCV 라이브러리로 컬러 이미지를 회색조(그레이스케일)로 변환하는 방법

출력 이미지

Java OpenCV 라이브러리로 컬러 이미지를 회색조(그레이스케일)로 변환하는 방법

실행 결과를 보면 원본 컬러 이미지가 채도 정보가 제거된 회색조 이미지로 성공적으로 변환된 것을 확인할 수 있습니다. 이 기법은 이미지 처리에서 에지 검출, 객체 인식 등 전처리 단계로 널리 활용되므로 꼭 익혀두면 유용합니다.