OpenCVSharp学习笔记(六)通道分割合并

通道分割

函数Cv2.Split

	Mat[]mats = Cv2.Split(img);

Cv2.Split 通道分割这里主要使用了这个方法,将图片的三色通道进行分割,opencv中的顺序和我们平时的顺序有区别,是BGR的顺序,不是我们平时使用的RGB顺序,也就是说mats[0]是Blue通道,mats[1]是Green通道,mats[2]是Red通道

注意这样分割出来的通道图片,并不是RGB的单色通道,而是三色通道的值都为R或G或B。这里一开始让我尝试了半天,还以为操作出现了错误

	Mat img = new Mat(@"./Resource/1.jpeg");
	Window window = new Window("img", WindowFlags.Normal);
	window.Resize(500, 640);
	//BGR
	Mat[]mats = Cv2.Split(img);
	window.ShowImage(img);
	Mat sum = new Mat();
	Window b = new Window("b", WindowFlags.Normal);
	Window g = new Window("g", WindowFlags.Normal);
	Window r = new Window("r", WindowFlags.Normal);
	b.Resize(500, 640);
	g.Resize(500, 640);
	r.Resize(500, 640);
	b.ShowImage(mats[0]);
	g.ShowImage(mats[1]);
	r.ShowImage(mats[2]);

下面是原图和分出来的三张灰度图片
在这里插入图片描述

通道合并

函数Cv2.Merge

这里我们做了一个通道的合并,传入的参数就是Mat数组,里面包含要合并的通道,最后一个参数是合成后的图像

  	        Cv2.Merge(new Mat[] { x, x, x}, bsum);//(b,0,0)图像

下面我们将图形分开合并成了蓝色、红色、绿色通道图

            Mat img = new Mat(@"./Resource/1.jpeg");
            Window window = new Window("img", WindowFlags.Normal);
            window.Resize(500, 640);
            //BGR
            Mat[]mats = Cv2.Split(img);
            window.ShowImage(img);
            Window b = new Window("b", WindowFlags.Normal);
            Window g = new Window("g", WindowFlags.Normal);
            Window r = new Window("r", WindowFlags.Normal);
            b.Resize(500, 640);
            g.Resize(500, 640);
            r.Resize(500, 640);
            //创建一个空通道0
            Mat zero = new Mat(mats[0].Size(), MatType.CV_8UC1, new Scalar(0));
            Mat bsum = new Mat();
            Mat gsum = new Mat();
            Mat rsum = new Mat();
            Cv2.Merge(new Mat[] { mats[0], zero, zero }, bsum);//(b,0,0)图像
            Cv2.Merge(new Mat[] { zero, mats[1], zero }, gsum);//(0,g,0)图像
            Cv2.Merge(new Mat[] { zero, zero, mats[2] }, rsum);//(0,0,r)图像
            b.ShowImage(bsum);
            g.ShowImage(gsum);
            r.ShowImage(rsum);
            Cv2.WaitKey(0);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code-Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值