Table of Contents  
 이미지 채널 분리 및 합치기 목차
이미지 채널 분리 및 합치기
컬러 이미지를 B, G, R 채널로 분리한 후, 순서를 R, G, B로 바꾸어 컬러 이미지를 생성하는 예제.
OpenCV가 제공하는 기본 채널연산.
- 채널 분리 (spilt)
- 채널 병합 (merge)
- 채널 혼합 (mix)
Color 창에 보이는 이미지를 보면 Red와 Blue 의 위치가 바뀜. 
 R, G, B 창에 보여지는 채널별 이미지는 해당 채널의 픽셀값이 255인 영역만 흰색으로 보임
  
 
C++
채널 분리
split(분리 할 이미지, 분리된 채널들이 저장될 배열)
# include < opencv2/opencv.hpp> # include < iostream>
using namespace cv;
using namespace std;
int main()
{
  Mat img_color;
  img_color = imread("color.png", IMREAD_COLOR);
  // 컬러 이미지를 채널별로 분리합니다.
  // img_channels 배열에 blue, green, red순으로 채널이 저장됩니다.
  Mat img_channels[3];
  split(img_color, img_channels);
  // 채널별 이미지를 조합하여 컬러 영상을 생성합니다.
  // blue와 red의 순서를 바꾸었습니다.
  vector<Mat> channels;
  channels.push_back(img_channels[2]); // red channels.push_back(img_channels[1]); // green channels.push_back(img_channels[0]); // blue
  Mat img_result;
  merge(channels, img_result);
  imshow("Color", img_result);
  imshow("B", img_channels[0]);
  imshow("G", img_channels[1]);
  imshow("R", img_channels[2]);
  waitKey(0);
  return 0;
}
채널 합치기
merge(합칠 이미지, int 합칠 이미지 개수, 출력 이미지);
채널 혼합
BGR을 RGB로 바꾸는 혼합순서 
input[0] -> output[2] (0 -> 2)
 input[1] -> output[1] (1 -> 1)
 input[2] -> output[0] (2 -> 0)
PYTHON
채널 분리
b, g, r = cv2.split(src)
- 입력 이미지(src)에서 채널을 분리해
- 단일 채널 이미지 배열(mv)을 생성 - mv는 목록(list) 형식으로 반환
- b, g, r 등의 형태로 각 목록의 원솟값을 변수로 지정
 
- 분리된 것은 흑백으로 표현됨
채널 병합
inverse = cv2.merge((r, g, b))
import cv2 as cv
img_color = cv.imread('color.png', cv.IMREAD_COLOR )
# 컬러 이미지를 채널별로 분리합니다.
img_b,img_g,img_r = cv.split(img_color)
# 채널별 이미지를 조합하여 컬러 영상을 생성합니다.
# blue와 red의 순서를 바꾸었습니다.
img_result = cv.merge((img_r, img_g, img_b))
cv.imshow("Color", img_result) 
cv.imshow("B", img_b) 
cv.imshow("G", img_g) 
cv.imshow("R", img_r)
cv.waitKey(0) 
cv.destroyAllWindows()
numpy 형식 채널 분리
이미지[높이, 너비, 채널]
 특정영역의 특정채널만 불러오는 법
:, :, n을 입력할 경우,
- 이미지 높이와 너비를 그대로 반환
- n번째 채널만 반환하여 적용
b = src[:, :, 0]
g = src[:, :, 1]
r = src[:, :, 2]