You can convert 3 channel image to 4 channel as follows:
cv::Mat source = cv::imread(path);
cv::Mat newSrc(source.size(), CV_MAKE_TYPE(source.depth(), 4));
int from_to[] = { 0,0, 1,1, 2,2, 2,3 };
cv::mixChannels(&source,1,&newSrc,1,from_to,4);
This way channel 4 will be a duplicate of channel 3. By using a negative number in the from_to
list, the output channel is zero filled. eg:
int from_to[] = { 0,0, 1,1, 2,2, -1,3 };
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…