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);

你可能感兴趣的:(openCVSharp,opencv,计算机视觉,人工智能)