opencv 入门学习总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq754772661/article/details/80631663

参考 学习网址:https://blog.csdn.net/column/details/opencv-tutorial.html
1.cv::Mat类是用于保存图像以及其他矩阵数据的数据结构
2.imread函数 加载图像

用imread打开图片给Mat类对象
eg:

Mat myMat= imread("dota.jpg");

图片放在工程目录下

3.namedWindow函数
用于创建窗口
4.imshow函数
在指定的窗口中显示一幅图像。
nameWindows和imshow中窗体名应该为一样 否则会有两个窗口imshow本身也会创建窗体
eg:

namedWindow("窗体");  
imshow("窗体",image); //第二个参数是Mat对象 也就是图片 

5.imwrite函数
将图片写入文件

imwrite("图片名.png", mat);
//第二个参数是Mat对象,也就是要写入文件的图

6.ROI区域
在图片上划分一个区域

//讲logo放在beijing上
Mat imageROI;  //定义一个Mat对象用来指定一个区域
//方法一  image代表在image这张图片上 前两个参数是位置  后两个参数是区域的长宽
imageROI=image(Rect(500,250,logo.cols,logo.rows)); 
 //方法二 image代表在image这张图片上 有两个Range参数 代表 这两个参数里面又有两个参数 分别是开始和停止的位置
imageROI=image(Range(250,250+logo.rows),Range(200,200+logo.cols)); 

图片叠加的例子

Mat srcImage1= imread("beijing".jpg");  
Mat logoImage= imread("logo.jpg");
//定义一个Mat类型并给其设定ROI区域  
Mat imageROI= srcImage1(Rect(200,250,logoImage.cols,logoImage.rows));
 //加载掩模(必须是灰度图)  
Mat mask= imread("dota_logo.jpg",0);  
//【4】logoImage参照着掩膜mask拷贝到imageROI  
logoImage.copyTo(imageROI,mask); 
//因为imageROI是srcImage1上的区域 所以此时叠加已经完成

7.addWeighted函数

addWeighted(srcImage1, alphaValue, srcImage2, betaValue, 0.0, dstImage);  
//上面的意思就是dst = src1*alpha+ src2*beta + gamma;  倒数第二个参数是偏移量 我还不懂 一般都是0.0
//求和的两个必须同样尺寸和深度  之前分通道spilt之后做加法出问题就是因为一个是单通道一个是多通道直接报错

8.split函数
spilt函数有两个原型

//但是前面都是要分离的图像 后面都是分离出来的结果的数组(0是蓝色 1是绿色 2是红色)
C++: void split(const Mat& src, Mat*mvbegin);  
C++: void split(InputArray m,OutputArrayOfArrays mv); 

eg:

vector<Mat> channels;  
Mat imageBlueChannel;  
Mat imageGreenChannel;  
Mat imageRedChannel;  
srcImage4= imread("dota.jpg");  
// 把一个3通道图像转换成3个单通道图像  
split(srcImage4,channels);//分离色彩通道  
imageBlueChannel = channels.at(0);  
imageGreenChannel = channels.at(1);  
imageRedChannel = channels.at(2);  

9.merge函数
merge是融合的意思所以就是spilt的反函数
也有两个原型

扫描二维码关注公众号,回复: 4636498 查看本文章
C++: void merge(const Mat* mv, size_tcount, OutputArray dst)  //单通道图像的指针  个数 输出
C++: void merge(InputArrayOfArrays mv,OutputArray dst)  //单通道图像数组 输出

猜你喜欢

转载自blog.csdn.net/qq754772661/article/details/80631663