opencv split和merge操作

简介:

#include<opencv2/opencv.hpp>
#include<iostream>
#include<cassert>
#include<vector>
using namespace cv;
using namespace std;
int main()
{
	Mat srcImage=imread("e:/huangshan.jpg");
	Mat imageBlue,imageGreen,imageRed;
	Mat mergeImage;
	//定义一个Mat向量容器保存拆分后的数据
	vector<Mat> channels;

	//判断文件加载是否正确
	assert(srcImage.data!=NULL);
	namedWindow("image",CV_WINDOW_AUTOSIZE);
	namedWindow("mergeImage",CV_WINDOW_AUTOSIZE);
	
	//通道的拆分
	split(srcImage,channels);
	
	//提取蓝色通道的数据
	imageBlue = channels.at(0);

	//提取绿色通道的数据
	imageGreen = channels.at(1);

	//提取红色通道的数据
	imageRed = channels.at(2);
	imshow("image",imageBlue);

	//对拆分的通道数据合并
	merge(channels,mergeImage);
	imshow("mergeImage",mergeImage);
	waitKey();
	system("pause");
	return 0;
}


#include<opencv2/opencv.hpp>
#include<iostream>
#include<cassert>
#include<vector>
using namespace cv;
using namespace std;
int main()
{
	Mat srcImage=imread("e:/jiansheng.jpg");
	Mat logoImage = imread("e:/timu.jpg",0);
	Mat imageBlue,imageGreen,imageRed;
	Mat mergeImage;
	//定义一个Mat向量容器保存拆分后的数据
	vector<Mat> channels;

	//判断文件加载是否正确
	assert(srcImage.data!=NULL && logoImage.data!=NULL);
	//namedWindow("image",CV_WINDOW_AUTOSIZE);
	namedWindow("mergeImage",CV_WINDOW_AUTOSIZE);
	
	//通道的拆分
	split(srcImage,channels);
	
	//提取蓝色通道的数据
	imageBlue = channels.at(1);
	addWeighted(imageBlue(Rect(0,0,logoImage.cols,logoImage.rows)),0.5,logoImage,0.5,0.,imageBlue(Rect(0,0,logoImage.cols,logoImage.rows)));


	//对拆分的通道数据合并
	merge(channels,mergeImage);
	imshow("mergeImage",mergeImage);
	waitKey();
	system("pause");
	return 0;
}


#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
int main()
{
	Mat img = imread("f:/huang.jpg");
	namedWindow("image",WINDOW_AUTOSIZE);
	imshow("image",img);
	Mat gray;
	cvtColor(img,gray,CV_RGB2GRAY);
	namedWindow("gray",WINDOW_AUTOSIZE);
	imshow("gray",gray);
	Mat mimg = imread("f:/mei.jpeg");
	namedWindow("mei",WINDOW_AUTOSIZE);
	resize(mimg,mimg,Size(img.cols,img.rows));
	addWeighted(mimg,0.2,img,0.9,0.,mimg);
	imshow("mei",mimg);
	vector<Mat> channels;
	split(img,channels);
	vector<Mat>::iterator it = channels.begin();
	char str[][20]={"blue","green","red"};
	int i=0;
	for(;it!=channels.end();++it,++i)
	{
	 
	   namedWindow(str[i],WINDOW_AUTOSIZE);
	   imshow(str[i],*it);
	}
	waitKey();
	return 0;
}



opencv split和merge操作

相关文章
|
10月前
|
存储 Cloud Native Linux
OpenCV 图像像素运算操作
OpenCV 图像像素运算操作
|
11月前
|
计算机视觉
OpenCV-通道合并cv::merge
OpenCV-通道合并cv::merge
116 0
|
11月前
|
计算机视觉 容器
OpenCV-通道分离cv::split
OpenCV-通道分离cv::split
|
4月前
|
计算机视觉 Python
OpenCV膨胀操作讲解及将图像加工成近视眼效果实战(附Python源码)
OpenCV膨胀操作讲解及将图像加工成近视眼效果实战(附Python源码)
56 0
|
10月前
|
计算机视觉
openCV顶帽操作
openCV顶帽操作
45 1
|
3月前
|
计算机视觉
OpenCV中图像算术操作与逻辑操作
OpenCV中图像算术操作与逻辑操作
51 1
|
4月前
|
计算机视觉 Python 索引
【Python Opencv】图片与视频的操作
【Python Opencv】图片与视频的操作
170 0
【Python Opencv】图片与视频的操作
|
3月前
|
存储 Cloud Native Linux
OpenCV鼠标操作(画红色方框截取图像)
OpenCV鼠标操作(画红色方框截取图像)
|
3月前
|
计算机视觉
OpenCV图像像素逻辑操作
OpenCV图像像素逻辑操作
|
3月前
|
算法 计算机视觉
【Qt&OpenCV 图像阈值操作 threshold】
【Qt&OpenCV 图像阈值操作 threshold】
33 0