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

Java OpenCV로 컬러(RGB) 이미지를 HLS 색 공간으로 변환하는 방법

OpenCV에서는 cvtColor() 메서드의 세 번째 매개변수에 Imgproc.COLOR_RGB2HLS 플래그를 전달하는 것만으로 RGB(컬러) 이미지를 HLS 색 공간으로 손쉽게 변환할 수 있습니다.

HLS 색 공간이란?

HLS는 색조(Hue), 명도(Lightness), 채도(Saturation)를 의미합니다. RGB가 빛의 삼원색 조합으로 색을 표현하는 반면, HLS는 사람이 색을 인식하는 방식에 가깝게 색조·밝기·채도의 세 요소로 색을 분리하여 표현합니다. 이러한 특성 때문에 특정 색상 영역을 추출하거나 밝기와 색상을 독립적으로 조정해야 하는 이미지 처리 작업에서 HLS 변환이 자주 활용됩니다.

예제 코드

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

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

        // 원본 이미지 읽기
        Mat src = Imgcodecs.imread("D:\\images\\car3.jpg");

        // 결과를 저장할 Mat 객체 생성
        Mat dst = new Mat();

        // RGB → HLS 색 공간 변환
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2HLS);

        // 변환된 이미지 저장
        Imgcodecs imageCodecs = new Imgcodecs();
        imageCodecs.imwrite("D:\\images\\hslImage.jpg", dst);

        System.out.println("Image Saved");
    }
}

코드 설명

1. 네이티브 라이브러리 로드: System.loadLibrary(Core.NATIVE_LIBRARY_NAME)을 호출하여 OpenCV의 네이티브 라이브러리를 먼저 로드해야 합니다. 이 과정이 없으면 OpenCV 함수 호출 시 오류가 발생합니다.

2. 이미지 읽기: Imgcodecs.imread() 메서드로 지정된 경로의 이미지 파일을 Mat 객체로 불러옵니다.

3. 색 공간 변환: Imgproc.cvtColor() 메서드에 원본 이미지(src), 결과를 담을 객체(dst), 그리고 변환 코드인 Imgproc.COLOR_RGB2HLS를 순서대로 전달합니다.

4. 결과 저장: imwrite() 메서드를 사용하여 변환된 HLS 이미지를 지정한 경로에 저장합니다.

입력 이미지

Java OpenCV로 컬러(RGB) 이미지를 HLS 색 공간으로 변환하는 방법

출력 이미지

Java OpenCV로 컬러(RGB) 이미지를 HLS 색 공간으로 변환하는 방법

실행 결과를 보면 원본 컬러 이미지가 HLS 색 공간으로 변환되어 각 채널이 색조(H), 명도(L), 채도(S) 값으로 재구성된 것을 확인할 수 있습니다. 반대로 HLS 이미지를 다시 RGB로 변환하려면 Imgproc.COLOR_HLS2RGB 플래그를 사용하면 됩니다.