一般的彩色图是由多个灰度图进行叠加产生的:

使用API函数split和merge进行通道的分离和合并。
split(src, mv);——将src的各通道图像矩阵值赋予mv
merge(mv, dst);——将mv合并到dst。
src——输入图像
mv——定义的空白图像数组矩阵
dst——输出图像
1、 将图像分离成3通道并显示:
void QuickDemo::channels_Demo(Mat& image) {
std::vector<Mat> mv;//图像数组
split(image, mv);
imshow("蓝色", mv[0]);
imshow("绿色", mv[1]);
imshow("红色", mv[2]);
}
2、只显示单个通道,需要将除指定通道外的其它矩阵置0:
void QuickDemo::channels_Demo(Mat& image) {
std::vector<Mat> mv;//图像数组
split(image, mv);
Mat dst;
mv[1] = 0;
mv[2] = 0;
merge(mv, dst);
imshow("单色通道", dst);
}
结果:

3、通道顺序对调:
API:
![]()
void QuickDemo::channels_Demo(Mat& image) {
std::vector<Mat> mv;//图像数组
split(image, mv);
/*imshow("蓝色", mv[0]);
imshow("绿色", mv[1]);
imshow("红色", mv[2]);*/
Mat dst;
mv[1] = 0;
mv[2] = 0;
merge(mv, dst);
imshow("单色通道", dst);
int from_to[] = {0,2, 1, 1, 2,0};
mixChannels(&image,1, &dst,1, from_to,3);//根据from_to来交换,入开始的0,2意为将通道0交换到通道2。
imshow("通道混合", dst);
}
说明:根据from_to来交换,以两个元素为一组,开头一组的的0,2意为将通道0交换到通道2。
结果:

本文介绍了如何使用API函数split和merge对彩色图像的通道进行分离和合并。通过示例展示了如何显示单个通道图像、调整通道顺序以及创建单色通道效果。示例代码详细解释了通道操作的过程,包括将图像拆分为RGB三个通道,只显示特定通道,以及通过mixChannels函数实现通道顺序的交换。
1740

被折叠的 条评论
为什么被折叠?



