2012-05-13 2 views

답변

0

split은 단일 채널 이미지의 배열로 이미지를 분할하고 merge은 임의의 순서로 다시 배치합니다. 이론적으로 opencv는 많은 수의 채널에서 작동하지만 많은 함수가 1 또는 3 (예 : 회색 또는 일반)에서만 작동한다고 생각합니다. '색)

+0

내가 사용보고 있었다 병합하지만 모든 채널을 전달하는 방법에 대해서는 약간 혼란 스러웠습니다. –

+0

@ChrisMondiek - cv :: Mat의 std :: vector입니다. 참조 카운트이므로 std :: vector에 추가 할 수 있으며 memery를 처리 할 것입니다. –

0

OpenCV에서 지원하는 이미지 형식에는 최대 4 개의 채널 (RGBA)이 있으므로 대부분 CV_MAX_CN (기본적으로 32 개) 채널을 정의 할 수있는 Mat으로 이미지 데이터를 변환해야 할 가능성이 큽니다. 당신은 아마 두 이미지가 올바른 형식으로되어 있는지 확인하기 위해 Mat::convertTo를 사용할 수

, 다음 mixChannels 사용하여 매핑과 같이 보일 것이다

mixChannels(const vector<Mat>& src, vector<Mat>& dst, const int* fromTo, int npairs) 

:

S1[0] -> D[0] 
S1[1] -> D[1] 
S1[2] -> D[2] 
S2[0] -> D[3] 
S2[1] -> D[4] 
S2[2] -> D[5] 

int from_to[] = { 0,0, 1,1, 2,2, 0,1, 1,4, 2,5 }; 
관련 문제