Change color space
Peponi │ 2/24/2025 │ 3m
C#
NugetPackageOpenCvSharp4
Change color space
2/24/2025
3m
Peponi
C#
NugetPackageOpenCvSharp4
1. Introduction
OpenCvSharp4에는 색상 공간을 바꾸기 위한 Cv2.CvtColor()
메서드가 존재한다. 이미지 프로세싱을 할 때 색상 공간을 여러 이유로 바꾸게 되는데, 주요 용도는 다음과 같다.
- 색상 분리 : 대체로 많이 사용하는 RGB 색상 공간의 경우 조명에 대한 영향이 각 채널별로 존재한다. 이를 HSV와 같은 색상 공간으로 변경하면 조명의 영향을 분리하여 색상 추출에 유리할 수 있다.
- 이미지 분석 : 색상 정보가 필요하지 않은 작업에서는 그레이스케일이 유리할 수 있으며 (속도), 색상을 기준으로 객체를 탐지하는 경우에는 HSV 색상 공간이 유리할 수 있다.
- 미디어 압축 : YCbCr, YUV 색상 공간은 이미지, 비디오 압축에 많이 사용된다.
Cv2.CvtColor()
의 ColorConversionCodes
에는 매우 많은 수의 enum이 존재하여 여기서는 자주 사용하는 색상 공간 변경에 대해 간략하게 알아본다. 자세한 내용은 Github/opencv - imgproc.hpp를 참조한다.
2. Example




private void ToGrayscale(Mat image)
{
using var grayscale = image.CvtColor(ColorConversionCodes.BGR2GRAY);
}
private void ToRGB(Mat image)
{
using var rgb = image.CvtColor(ColorConversionCodes.BGR2RGB);
}
private void ToHSV(Mat image)
{
using var hsv = image.CvtColor(ColorConversionCodes.BGR2HSV);
}
IMPORTANT
색상 공간을 그레이스케일
로 변경하는 경우에는 단일 채널로 변경되기 때문에, 다시 원래의 색상으로 되돌릴 수 없다.