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操作

时间: 2024-09-15 04:13:30

opencv split和merge操作的相关文章

javascript String split方法误操作_javascript技巧

split定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separator, howmany)参数 描述 separator 必需.字符串或正则表达式,从该参数指定的地方分割 stringObject. howmany 可选.该参数可指定返回的数组的最大长度.如果设置了该参数,返回的子串不会多于这个参数指定的数组.如果没有设置该参数,整个字符串都会被分割,不考虑它的长度. 返回值 一个字符串数组.该数组是通过在 separator

python opencv 对像素进行操作

02-python opencv 对像素进行操作 02-python opencv 对像素进行操作 概述 实现过程 引用 打开图片 加椒盐噪声 主函数调用并显示图像 等待键盘输入并关闭所有窗口 源代码 运行结果 参考 概述 本节实现的是在图片上模拟机上椒盐噪声,主要过程如下. 打开一个图片 产生随机坐标 加上"椒盐" 显示加噪图片 实现过程 引用 这里我们需要引用cv2和numpy,cv2不言而喻,而NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也

SQL点滴18—SqlServer中的merge操作,相当地风骚

原文:SQL点滴18-SqlServer中的merge操作,相当地风骚 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语

MySQL · TokuDB · TokuDB索引结构--Fractal Tree

背景介绍 TokuDB采用的是Fractal Tree作为索引的数据组织方式.它是一种面向磁盘I/O优化的数据结构,采用"分期偿还"策略减少在数据插入过程中从root节点到leaf节点的搜索过程.这种搜索过程可以简称为locate_position,就是寻找要插入key在Tree中位置的过程. 一般B+Tree的插入过程分为两个部分: Locate_position: 从root开始使用binary search方法递归地寻找应该插入到哪个子节点上,直到在leaf节点找到应该插入的位置

TokuDB索引结构--Fractal Tree

背景介绍 TokuDB采用的是Fractal Tree作为索引的数据组织方式.它是一种面向磁盘I/O优化的数据结构,采用"分期偿还"策略减少在数据插入过程中从root节点到leaf节点的搜索过程.这种搜索过程可以简称为locate_position,就是寻找要插入key在Tree中位置的过程. 一般B+Tree的插入过程分为两个部分: Locate_position: 从root开始使用binary search方法递归地寻找应该插入到哪个子节点上,直到在leaf节点找到应该插入的位置

C# WORD操作实现代码_C#教程

1.先通过程序生成报表样式的HTML页面,然后修改HTML页面的后缀名为DOC. 2.定制WORD文档的模板文件,在C#中操作WORD模板,生成新的WORD文档. 第一方案简单,只需要改动文件的扩展名就行了,但是也存在了一些问题,譬如生成的WORD文档样式的丢失.这样对于客户来说可能是一个无法通过的方案.第二方案比较复杂,需要调用OFFICE的WORD组件通过C#来操作WORD,进而生成WORD.此方法类似于我们在c#中的后台拼接数据.虽然麻烦,但是能够灵活定制,只不过是操作WORD对象而已.

Javascript中split函数的使用方法说明

 本篇文章主要是对js中split函数的使用方法进行了说明介绍,需要的朋友可以过来参考下,希望对大家有所帮助 split split与join作用相反,用于把一个字符串分割成字符串数组. stringObject.split(a,b)这是它的语法.   a是必须的 决定从a这分割. b不是必须的,可选.该参数可指定返回的数组的最大长度 .如果设置了该参数,返回的子串不会多于这个参数指定的数组.如果没有设置该参数,整个字符串都会被分割,不   考虑它的长度.   注意返回的数组中不包括a本身:  

如何实现图像减操作

问题描述 如何实现图像减操作 #include#include#include using namespace std;void main(unsigned char *src1 unsigned char *src2 unsigned char *dst int width int height){ IplImage *image1 *image2 *image3;image1 = cvLoadImage(""1.jpg"" 0);//以灰度图像的形式读入图片 i

nested loop,merge join,hash join与子查询优化

-- 今天见到一条sql,大致意思为:A 表 left join B 表,要查出A表所有的数据,以及统计所有A表与B表相关行数 create table t1 (id int , name varchar(50),password varchar(50)); insert into t1 select id,concat(id,'rudy'),concat('password',id) from generate_series(1,100000) id; alter table t1 add p