opencv split和merge操作

opencv split和merge操作

分类: OpenCv2014-05-13 09:38 656人阅读 评论(1) 收藏 举报

[cpp] view plaincopyprint?

  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>
  3. #include<cassert>
  4. #include<vector>
  5. using namespace cv;
  6. using namespace std;
  7. int main()
  8. {
  9. Mat srcImage=imread("e:/huangshan.jpg");
  10. Mat imageBlue,imageGreen,imageRed;
  11. Mat mergeImage;
  12. //定义一个Mat向量容器保存拆分后的数据
  13. vector<Mat> channels;
  14. //判断文件加载是否正确
  15. assert(srcImage.data!=NULL);
  16. namedWindow("image",CV_WINDOW_AUTOSIZE);
  17. namedWindow("mergeImage",CV_WINDOW_AUTOSIZE);
  18. //通道的拆分
  19. split(srcImage,channels);
  20. //提取蓝色通道的数据
  21. imageBlue = channels.at(0);
  22. //提取绿色通道的数据
  23. imageGreen = channels.at(1);
  24. //提取红色通道的数据
  25. imageRed = channels.at(2);
  26. imshow("image",imageBlue);
  27. //对拆分的通道数据合并
  28. merge(channels,mergeImage);
  29. imshow("mergeImage",mergeImage);
  30. waitKey();
  31. system("pause");
  32. return 0;
  33. }

[cpp] view plaincopyprint?

  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>
  3. #include<cassert>
  4. #include<vector>
  5. using namespace cv;
  6. using namespace std;
  7. int main()
  8. {
  9. Mat srcImage=imread("e:/jiansheng.jpg");
  10. Mat logoImage = imread("e:/timu.jpg",0);
  11. Mat imageBlue,imageGreen,imageRed;
  12. Mat mergeImage;
  13. //定义一个Mat向量容器保存拆分后的数据
  14. vector<Mat> channels;
  15. //判断文件加载是否正确
  16. assert(srcImage.data!=NULL && logoImage.data!=NULL);
  17. //namedWindow("image",CV_WINDOW_AUTOSIZE);
  18. namedWindow("mergeImage",CV_WINDOW_AUTOSIZE);
  19. //通道的拆分
  20. split(srcImage,channels);
  21. //提取蓝色通道的数据
  22. imageBlue = channels.at(1);
  23. addWeighted(imageBlue(Rect(0,0,logoImage.cols,logoImage.rows)),0.5,logoImage,0.5,0.,imageBlue(Rect(0,0,logoImage.cols,logoImage.rows)));
  24. //对拆分的通道数据合并
  25. merge(channels,mergeImage);
  26. imshow("mergeImage",mergeImage);
  27. waitKey();
  28. system("pause");
  29. return 0;
  30. }

[cpp] view plaincopyprint?

  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>
  3. #include<vector>
  4. using namespace std;
  5. using namespace cv;
  6. int main()
  7. {
  8. Mat img = imread("f:/huang.jpg");
  9. namedWindow("image",WINDOW_AUTOSIZE);
  10. imshow("image",img);
  11. Mat gray;
  12. cvtColor(img,gray,CV_RGB2GRAY);
  13. namedWindow("gray",WINDOW_AUTOSIZE);
  14. imshow("gray",gray);
  15. Mat mimg = imread("f:/mei.jpeg");
  16. namedWindow("mei",WINDOW_AUTOSIZE);
  17. resize(mimg,mimg,Size(img.cols,img.rows));
  18. addWeighted(mimg,0.2,img,0.9,0.,mimg);
  19. imshow("mei",mimg);
  20. vector<Mat> channels;
  21. split(img,channels);
  22. vector<Mat>::iterator it = channels.begin();
  23. char str[][20]={"blue","green","red"};
  24. int i=0;
  25. for(;it!=channels.end();++it,++i)
  26. {
  27. namedWindow(str[i],WINDOW_AUTOSIZE);
  28. imshow(str[i],*it);
  29. }
  30. waitKey();
  31. return 0;
  32. }
时间: 2024-10-06 02:56:47

opencv split和merge操作的相关文章

Partition Range 的 Split 和 Merge 操作

对于分区表,在 empty partition 上进行 Partition Range 的 Split 和 Merge 操作,实际上是metadata-only change,Data 并不会移动.如果在 non-empty 的partition上进行split和merge,是十分耗时的. Best Practice: Maintain an empty partition on both ends of the partitioned table and ensure that only em

菜鸟教程之工具使用(九)——Git如何进行分支的merge操作

今天继续我们的Git教程,Git杀手锏级的功能就是对于分支的管理,那么今天就来说说分支之间的merge操作.merge可以说是我们日常使用最多的操作之一,通常一个merge操作会包含commit.pull.push等操作.用惯了SVN的朋友可能会觉得Git操作起来很麻烦,其实Git常用的也就那么几个操作,非常的简单,很容易上手的.下面就带大家做一个完整的merge操作. 首先,merge操作是在不同的分支间进行的,如果你还不知道分支怎么创建,那么请参考--<从GIt上导出Maven项目>.当我

OpenCV 学习(像素操作 Manipuating the Pixels)

OpenCV 学习(像素操作 Manipuating the Pixels) OpenCV 虽然提供了许多类型的图像处理函数,可以对图像进行各种常见的处理,但是总会有些操作时没有的,这时我们就需要自己来操纵像素,实现我们需要的功能.今天就来讲讲 OpenCV 进行像素级操作的几种方法,并做个比较. 在 OpenCV 中,图像用矩阵来表示,对应的数据类型为 cv::Mat . cv::Mat 功能很强大,矩阵的元素可以为字节.字.浮点数.数组等多种形式.对于灰度图像,每个像素用一个 8 bit 字

OpenCV &mdash;&mdash; 矩阵和图像操作

cvAbs , cvAbsDiff , cvAbsDiffS cvAdd , cvAddS , cvAddWeighted(可添加权重) #include <cv.h> #include <highgui.h> int main(int argc,char** argv) { IplImage *s1,*s2; s1=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_COLOR); s2=cvLoadImage("test.

SqlServer中的merge操作(转载)

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

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

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

python opencv linux下合作操作摄像头

设想: 之前使用C#控制摄像头的,现在厌烦了windows,决定转移到linux下玩耍.感觉能够python语言特有的好入手,正好替代C#,选择了deepin2014.1作为试验品.现在的设想是第一步实现在自己电脑上对视频的采集,第二步实现视频传输.慢慢来吧.百度说python想操作摄像头,VideoCapture是windows特有的,linux要用opencv才行. 下载: 百度下载了最新的opencv,2.4.9版本,正好和deepin2014.1自带的python2.7般配,不冲突.且发

SVN分支/主干Merge操作小记

一.前言 说来惭愧,鄙人从事开发多年,使用svn已经好几个年头了,但是却仅限于update.commit.compare之类的操作,最近想到github上学习别人写的NIO源码,顺便去熟悉git的使用,但是一想到svn,我心里虚了:用了那么多年却对其一知半解,就连最基本的权限分配都没有做过,更别说进行分支拉取和合并了,何谈去get其他技能?做技术的还是要踏实一点,近一年来,我都在对之前未深入的领域进行扫盲,所以,注定svn是绕不过的坎,于是乎开始各种查资料,安装svn服务端(Virtual SV

图像处理之 opencv 学习---矩阵的操作

OpenCV的一些操作,如生成随机矩阵,高斯矩阵,矩阵相乘之类的 /*功能:说明矩阵的一些操作方法*/#include "cv.h"//该头文件包含了#include "cxcore.h"#include "highgui.h"#include <stdio.h>void PrintMat(CvMat *A); // 显示矩阵void GenRandn(CvMat *arr, int seed); // 生成正态分布的随机矩阵void