본문 바로가기
영상처리 프로그래밍/OpenCV-Python

OpenCV 채널 처리 함수

by Glory_Choi 2022. 11. 3.
반응형

채널 처리 함수

 

함수 설명

cv2.merge(mv[ , dst]) >> dst
  • 설명 : 여러 개의 단일채널 배열을 다채널 배열로 합성한다.
인수 설명
  • mv 합성될 입력 배열 혹은 벡터, 합성될 단일채널 배열들의 크기와 깊이(depth)가 동일해야 함.
  • dst 입력 배열과 같은 크기와 같은 깊이의 출력 배열
cv2.split(m[ , mv] >> mv
  • 설명 : 다채널 배열을 여러 개의 단일채널 배열로 분리한다.
인수 설명
  • m 입력되는 다채널 배열                                                                                                                    
  • mv 분리되어 반환되는 단일채널 배열들의 벡터

 

*merge와 split은 위에서 설명한 것과 같이 채널을 합치거나 나누어 주는 opencv함수이다. cv2.spilt()을 예를 들면 BGR채널을 B채널, G채널, R채널로 각각 나누어 반환한다. cv2.merge는 B채널, G채널, R채널 3개의 채널을 합쳐 BGR채널로 만들어 주는 함수이다.

 

영상 split

 

소스 코드

import cv2

image = cv2.imread( "images/color.jpg", cv2.IMREAD_COLOR)   # 영상 읽기
if image is None: raise Exception("영상 파일 읽기 오류 발생")  # 예외 처리
if image.ndim != 3: raise Exception("컬러 영상 아님")
   
bgr = cv2.split(image)                      # 채널 분리: 컬러영상--> 3채널 분리
# blue, green, red = cv2.split(image)

print("bgr 자료형:",  type(bgr), type(bgr[0]), type(bgr[0][0][0]))
print("bgr 원소개수:", len(bgr))

# 각 채널을 윈도우에 띄우기
cv2.imshow("image", image)
cv2.imshow("Blue channel" , bgr[0])         # blue 채널
cv2.imshow("Green channel", bgr[1])         # green 채널
cv2.imshow("Red channel"  , bgr[2])         # red 채널
# cv2.imshow("Blue channel" , image[:,:,0])             # 인덱싱
# cv2.imshow("Green channel", image[:,:,1])
# cv2.imshow("Red channel"  , image[:,:,2])
cv2.waitKey()

실행 결과

bgr 자료형: <class 'tuple'> <class 'numpy.ndarray'> <class 'numpy.uint8'>
bgr 원소개수: 3

 

 

영상 merge

 

소스 코드

import cv2

image = cv2.imread( "images/color.jpg", cv2.IMREAD_COLOR)   # 영상 읽기
if image is None: raise Exception("영상 파일 읽기 오류 발생")  # 예외 처리
if image.ndim != 3: raise Exception("컬러 영상 아님")
   
bgr = cv2.split(image)                      # 채널 분리: 컬러영상--> 3채널 분리
# blue, green, red = cv2.split(image)

print("bgr 자료형:",  type(bgr), type(bgr[0]), type(bgr[0][0][0]))
print("bgr 원소개수:", len(bgr))

# 각 채널을 윈도우에 띄우기
cv2.imshow("Blue channel" , bgr[0])         # blue 채널
cv2.imshow("Green channel", bgr[1])         # green 채널
cv2.imshow("Red channel"  , bgr[2])         # red 채널
# 채널을 합친후 다시 윈도우에 띄우기
dst = cv2.merge([bgr[0], bgr[1], bgr[2]])
cv2.imshow("dst channel"  , dst)  
cv2.waitKey()
 

실행 결과

bgr 자료형: <class 'tuple'> <class 'numpy.ndarray'> <class 'numpy.uint8'>
bgr 원소개수: 3

 

반응형

'영상처리 프로그래밍 > OpenCV-Python' 카테고리의 다른 글

관심 영역(ROI)  (0) 2022.11.16
논리(비트) 연산  (0) 2022.11.16
OpenCV Python 영상 파일 I/O 처리  (2) 2022.10.06