OpenCV에서는 Imgproc 클래스의 cvtColor() 메서드를 사용하여 이미지의 색상 공간을 다른 형식으로 손쉽게 변환할 수 있습니다. 이 메서드는 다음 세 가지 매개변수를 받습니다.
- src – 원본(소스) 이미지를 나타내는 Matrix 객체
- dst – 변환 결과가 저장될 대상(destination) Matrix 객체
- code – 변환될 색상 공간의 유형을 지정하는 정수 값
HLS를 컬러 이미지로 변환하기
HLS 색상 공간의 이미지를 다시 컬러(RGB) 이미지로 변환하려면 Imgproc.COLOR_HLS2RGB 코드를 cvtColor() 메서드에 전달하면 됩니다. 반대로 컬러 이미지를 HLS로 변환할 때는 Imgproc.COLOR_RGB2HLS를 사용합니다.
예제 코드
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class RGB2HSL {
public static void main(String args[]) throws Exception {
// OpenCV 핵심 네이티브 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 이미지 읽기
Mat src = Imgcodecs.imread("D:\\images\\car.jpg");
// 결과를 저장할 빈 대상 행렬 생성
Mat dst = new Mat();
// 이미지를 HLS 색상 공간으로 변환
// (HLS에서 RGB로 되돌리려면 Imgproc.COLOR_HLS2RGB 사용)
Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2HLS);
// Imgcodecs 클래스 인스턴스 생성
Imgcodecs imageCodecs = new Imgcodecs();
// 변환된 이미지 저장
imageCodecs.imwrite("D:\\images\\hslImage.jpg", dst);
System.out.println("Image Saved");
}
}입력 이미지

출력 결과

정리
cvtColor() 메서드에 적절한 색상 변환 코드만 지정하면 RGB ↔ HLS 간 변환이 매우 간단하게 처리됩니다. HLS는 색조(Hue), 채도(Lightness/Saturation 계열), 명도 성분으로 색을 표현하는 방식으로, 특정 색상 범위를 추출하거나 조명 변화에 강건한 이미지 처리를 수행할 때 유용합니다.