Koo's.Co
[OpenCV] 컬러 영상 기본 함수 본문
1. split
BGR로 구성된 영상을 3개의 grayscale 이미지로 나누어 반환함
각 grayscale은 해당 색상 성분이 많을수록 흰색에 가깝게, 적을수록 검정색에 가깝게 표현됨
cv2.split(m, mv=None) -> dst
- m: 다채널 영상(B, G, R)로 구성된 영상
- mv: 출력 영상
- dst: 출력 영상 리스트, BGR 순서에 맞는 grayscale 영상을 3개 반환함
2. merge
split을 이용해 나눈 3개의 grayscale 영상을 다시 합치는 함수
cv.merge(mv, dst=None) -> dst
- mv: 입력 영상 리스트, BGR 순서에 맞는 grayscale 영상 리스트
- dst: 출력 영상
3. cvtColor
영상 색상에 따라 다양한 색영역을 지원함
RGB(GBR)보다는 다른 색영역을 많이 사용
cv2.cvtColor(src, code, dst=None, dstCn=None) -> dst
- src: 입력 영상
- code: 색 변환 코드
- dstCn: 결과 영상의 채널 수. 0인 경우 자동으로 결정
- dst: 출력 영상
* Color Conversion Code
OpenCV: Color Space Conversions
enum cv::ColorConversionCodes { cv::COLOR_BGR2BGRA = 0, cv::COLOR_RGB2RGBA = COLOR_BGR2BGRA, cv::COLOR_BGRA2BGR = 1, cv::COLOR_RGBA2RGB = COLOR_BGRA2BGR, cv::COLOR_BGR2RGBA = 2, cv::COLOR_RGB2BGRA = COLOR_BGR2RGBA, cv::COLOR_R
docs.opencv.org
cv2.COLOR_BGR2GRAY / cv2.COLOR_GRAY2BGR | BGR ⇔ GrayScale |
cv2.COLOR_BGR2RGB / cv2.COLOR_RGB2BGR | BGR ⇔ RGB |
cv2.COLOR_BGR2HSV / cv2.COLOR_HSV2BGR | BGR ⇔ HSV |
cv2.COLOR_BGR2YCrCb / cv2.COLOR_YCrCb2BGR | BGR ⇔ YCrCb |
1) GRAYSCALE
- RGB 색상을 그레이스케일 이미지로 변환
- 색상 정보가 큰 효용이 없는 경우에 사용
- 픽셀 당 3byte => 1byte
- 장점: 저장 용량 감소 및 데이터 처리 속도 향상
- 단점: 색상 정보 손실
2) HSV
- Hue : 색상, 색의 종류
- R(0°, 179°), G(120° or 60°), B(240° or 120°)
- 180도로 Hue를 나타내는 경우 각각이 절반에 해당됨
- Saturation: 채도, 색의 탁하고 선명한 정도
- 값이 클수록 색상이 풍부해짐
- 값이 작을수록 흰색에 가까워짐
- Value: 명도, 빛의 밝기, 색의 밝기 정도
opencv에서는 크기가 1byte인 CV_8U를 사용하기 때문에 H를 0 ~ 179로 표현
3) YCrCb
- PAL, NTSC, SECAM 등 컬러 비디오 표준에 사용되는 색 공간
- 영상 밝기 정보와 색상 정보를 분리하여 부호화
- 컬러 TV와 흑백 TV를 호환하기 위해 사용한 색 영역
- Y: 밝기 정보(luma)
- Cr, Cb: 색차(chroma)
- Cr: Chroma에서 red 성분이 밝게 나타남
- Cb: Chroma에서 blue 성분이 밝게 나타남
'Python > 영상처리' 카테고리의 다른 글
[OpenCV] 히스토그램 분석 (0) | 2023.01.05 |
---|---|
[OpenCV] 명암비 조절 (0) | 2023.01.05 |
[OpenCV] 산술 연산 (0) | 2023.01.04 |
[OpenCV] 마스크 연산, ROI(Region of Interest) (0) | 2023.01.04 |
[matplotlib] 영상 출력 (0) | 2023.01.04 |