OpenCV 비전 실무4장 · 채널 처리와 히스토그램 분석5 / 21← 이전목차다음 →MetaContents

4장. 채널 처리와 히스토그램 분석

채널 하나만 보기

셀로판지 한 장만 따로 들고 보는 방법은 두 가지입니다. 흰 종이 위에 놓고 무늬의 진하기만 보거나, 빛에 비춰 원래 색으로 봅니다. 채널 하나도 두 가지로 띄울 수 있습니다. 흑백 그림으로 띄우거나, 나머지 두 채널을 0 으로 채워 그 색으로 띄웁니다.

채널 하나를 흑백으로 보는 방법과 나머지 채널을 0 으로 채워 그 색으로 보는 방법을 견준 그림

왼쪽 상자는 채널 한 장을 그대로 흑백으로 띄우는 방법이고, 오른쪽 상자는 나머지 두 채널을 0 으로 채워 그 색으로 띄우는 방법입니다. 여기서 흰 종이 위에 놓고 보는 것이 흑백 보기, 빛에 비춰 보는 것이 그 색으로 보기입니다.

노을 그림의 R 채널을 흑백으로 띄운 그림과 빨강으로 띄운 그림

가운데와 오른쪽은 같은 R 채널입니다. 가운데는 밝을수록 빨강이 많다는 뜻이고, 오른쪽은 같은 숫자를 빨간 빛의 세기로 보여 줍니다. 담긴 숫자는 똑같고 보여 주는 방법만 다릅니다.

두 가지 보기 견주기

견줄 것흑백으로 보기그 색으로 보기
만드는 법채널 한 장을 cmap="gray" 로다른 두 채널을 0 으로 채워 cv2.merge
배열 모양(세로, 가로)(세로, 가로, 3)
좋은 점밝기 차이를 또렷하게 읽는다어느 색 채널인지 한눈에 안다
쓰는 곳채널끼리 견주기, 분석수업 자료, 설명용 그림

짧은 예시

Python
import cv2
import numpy as np

img = cv2.imread("ch04_scenes/sunset.png")
b, g, r = cv2.split(img)

# np.zeros_like: 주어진 배열과 모양·자료형이 같고 모든 값이 0 인 배열
zero = np.zeros_like(r)
# 파랑, 초록 자리에 0 을 넣고 빨강 자리에만 R 채널을 넣는다 → 빨강으로만 보인다
red_only = cv2.merge([zero, zero, r])
print(red_only.shape)          # 결과: (240, 320, 3)
print(red_only[140, 200])      # 결과: [  0   0 255] → 해 한가운데의 빨강만 남았다

np.zeros_like 의 like 는 "~처럼"이라는 뜻입니다. "r 처럼 생긴 0 배열"을 만듭니다.

주의할 점

  • 채널 한 장을 cmap="gray" 없이 띄우면 Matplotlib 이 가짜 색을 입힙니다(1장).
  • "그 색으로 보기" 그림을 Matplotlib 으로 띄울 때도 cv2.COLOR_BGR2RGB 로 바꿔야 빨강이 빨갛게 보입니다.
← 이전 절4장 · 채널 나누기와 합치기다음 절 →4장 · 채널 바꿔치기와 색 정보 분석