[原创]OpenCvSharp学习1—-图像三通道分离

看网上都是C++的,没有C#的就来写一个,其实本质都是一样的

 // 读取一张图片
Mat srcImage = new Mat(@"D:\1.jpg", (ImreadModes)0x1);
            Mat[] channels;
//Split图像切割,成3个通道,并声明3个变量分别储存,此时3个图像都是单通道的,因此显示出来是灰色图片
            Cv2.Split(srcImage, out channels);
            Mat srcImage_blue = channels[0];
            Mat srcImage_green = channels[1];
            Mat srcImage_red = channels[2];
//声明一个同尺寸0像素图,一定要注意类型,不知道类型可以用srcImage.Type()看看,1代表1个通道
Mat Image_0 = new Mat(srcImage.Size(),MatType.CV_8UC1, (Scalar)0);
//声明一个同尺寸图,融合用
Mat Image_new = new Mat(srcImage.Size(), srcImage.Type()); 
//把绿红通道像素赋值为0,然后Merge方法进行合并
channels[1] = Image_0;
channels[2] = Image_0;
Cv2.Merge(channels, Image_new);
//出蓝色图
Cv2.ImShow("image_blue", Image_new);
//其他同理
最后结果

如Merge方法合并那行出现错误:mv[i].size == mv[0].size && mv[i].depth() == depth” 那大概率是你声明Image_0或者Image_new时MatType有问题

隐藏
变装
Scroll Up