본문 바로가기

OCR/OpenCV

C++ 이미지 split, merge

반응형

Multi Channels -> B, G, R 각각의 Single Channel로 split해보고,

이를 다시 merge하여 다시 3채널의 컬러이미지로 되돌려 보자.

 

Mat img = imread('my_image.jpg', IMREAD_COLOR);

IMREAD_COLOR로 읽으면 B,G,R3개의 채널이 결합된 Multi-channel인 상태다.

 

*각각의 채널로 나누어보자.

Mat bgr[3]; //split 해서 3개의 채널을 담을 배열 선언
split(img, bgr); //3 channels를 가진 img를 split해서 각각의 single channel을 bgr 배열 요소에 담음.

3개의 채널이 합쳐졌을 때 B,G,R의 값에 따라 색상을 가지는 것이지

--> (255, 0, 0) : R:255, G:0, B:0에 따른 색상.

single channel의 경우에는 3개의 색상 값이 아닌, 0~255의 범위 내의 하나의 값이므로 출력하면 당연히 흑백임.


*다시 하나의 채널로 합쳐보자.

Mat merged_image;
merge(bgr, 3, merged_image) //single channels가 담긴 배열, 배열 크기(3채널), 결과를 담을 곳

bgr[0]에는 B 색상과 관련된 single channel

bgr[1]에는 G 색상과 관련된 single channel

bgr[2]에는 R 색상과 관련된 single channel

이 담긴 상태.

이 3개의 single channel 들을 합칠 것이므로 당연히 배열의 크기는 3

 

 

반응형

'OCR > OpenCV' 카테고리의 다른 글

C++에서 이미지 가로,세로,채널,타입 구하기  (0) 2019.07.04
OpenCV 및 관련파일 설치  (3) 2019.06.25