OpenCV之分离和合并颜色通道

先上代码

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>

using namespace cv;
using namespace std;


int main(int argc, char** argv)
{
	Mat srcImage = imread("700levi.jpg");
	Mat imageBlueChannel, imageGreenChannel, imageRedChannel, mergeImage;
	//定义Mat向量容器保存拆分后的容器
	vector<Mat> channels;

	//通道的拆分
	split(srcImage, channels);

	//提取三色的通道的数据
	imageBlueChannel = channels.at(0); 
	imshow("imageBlueChannel", imageBlueChannel);

	imageGreenChannel = channels.at(1);
	imshow("imageGreenChannel", imageGreenChannel);

	imageRedChannel = channels.at(2);
	imshow("imageRedChannel", imageRedChannel);


	//对拆分的通道数据合并
	merge(channels, mergeImage);
	imshow("mergeImage", mergeImage);

	waitKey(0);
	return 0;
}

效果

解析

 个人理解就是一个函数然后填入对应的参数,把一个图像矩阵拆开或者合并,拆开多通道数组到vector中,那么vector中就按照BGR顺序来存储每个通道的数据。但是注意程序中的赋值,Mat只拷贝了头指针,也就是说,修改其中一个,另一个也会随之改变。

猜你喜欢

转载自blog.csdn.net/sono_io/article/details/124478450