OpenCV의 경우, 다양한 color space를 지원함.
result_img = cv2.cvtColor(src_img, conversion_flag)
위와 같은 code를 통해 src_img
를 다른 color space의 이미지(실제로는 numpy의 ndarray) result_img
로 변경할 수 있음.
conversion_flag
는 매우 다양하지만, 주로 사용하는 건 다음과 같음.
cv2.COLOR_BGR2GRAY
: BGR(Blue, Green, Red)을 Gray-scale image로cv2.COLOR_BGR2RGB
: opencv는 BGR이 기본인지라,matplotlib
나PIL
과 같이 쓰려면 RGB로 바꾸어야 함.cv2.COLOR_BGRA2RGBA
: opencv는 BGR이 기본인지라, alpha채널이 있는 경우에matplotlib
나PIL
과 같이 쓰려면 RGBA로 바꾸어야 함.cv2.COLOR_BGR2HSV
: BGR을 색의 종류를 한 채널(Hue)만으로 사용하는 HSV로 변경할 경우 사용.cv2.COLOR_GRAY2BGR
: 1개의 채널을 3개의 채널로 늘려주는 역할. RGB로 훈련된 CNN등에 입력으로 사용해야하는 경우 이용됨.cv2.COLOR_BGR2YUV
: BGR을 YUV로 변경. YUV의 경우, intensity(pixel의 bightness, 밝기를 의미)에 해당하는 Y에 많은 비트가 할당되므로 명암 대비를 좋게해주는 처리를 할 때 많이 사용된다고 하나 OpenCV에서는 0-255의 값으로 처리가 되는 터라 그리 많이 사용해 본 적은 없음.
YUV는 원래 아날로그 TV에서 사용되던 것이고,
MPEG아나 JPEG 등에서 사용되는 YCbCr이 보다 많이 쓰임.
(둘은 기반하고 있는 원리는 거의 비슷하나 실제 변환 공식은 차이가 있음. OpenCV는 YCrCb도 지원함),
코드의 예는 다음과 같음.
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
같이보면 좋은 자료들
2022.09.21 - [Programming/DIP] - [DIP] Color Space or Color Model
2024.09.16 - [Programming/DIP] - [CV] cv.imread
'Programming > DIP' 카테고리의 다른 글
[DIP] OpenCV 에서 URL로 이미지 로딩 (0) | 2022.09.21 |
---|---|
[DIP] Color Space or Color Model (0) | 2022.09.21 |
[Math] Hessian: Summary (0) | 2022.06.05 |
PIL과 opencv에서의 image 변환. (1) | 2021.11.22 |
Conda backup for DIP 2021 (0) | 2021.09.18 |