【opencv】图像通道分离与合并

目录: 1.split() 2.merge()

1.split() 参数一:输入图像 参数二:分离图像数组

代码演示:

#include<iostream>
#include<opencv2opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
          
   
	Mat img = imread("D:\photogallery\人物\image_5.png");

	vector<Mat> mv;
	split(img, mv);
	//mv[1] = Scalar(0);

	
	imshow("blue channl", mv[0]);
	imshow("green channl", mv[1]);
	imshow("red channl", mv[2]);
	imshow("img", img);

	waitKey(0);

	return 0;
}

分离完后,会是三张灰度图,这是因为现在图像已经变成单通道,其灰度值就代表它之前在其所在通道的比重。

2.merge() 参数一:输入图像数组 参数二:输出图像

见代码示例

#include<iostream>
#include<opencv2opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
          
   
	Mat img = imread("D:\photogallery\人物\image_5.png");

	vector<Mat> mv;
	split(img, mv);
	mv[1] = Scalar(0);//把绿色通道置0
	//bitwise_not(mv[1], mv[1]);//绿色通道取反
	Mat dest;
	merge(mv, dest);
	imshow("blue channl", mv[0]);
	imshow("green channl", mv[1]);
	imshow("red channl", mv[2]);
	imshow("dest", dest);
	imshow("img", img);

	waitKey(0);

	return 0;
}
经验分享 程序员 微信小程序 职场和发展