先来分析一下上节代码:
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace cv;//一定要有
using namespace std;
int main(){
Mat src = imread("D:/t.jpg",1);//随便一张图片(注意是/不是\)推荐绝对路径,如果用相对路径一定要手动将文件复制到工程目录,在解决方案资源管理器中添加文件//是无效的。
namedWindow("src-window");
imshow("src-window", src);
waitKey(0);
return 0;
}
头文件#include<opencv2\opencv.hpp>几乎包括opencv所有模块,是一个汇总,如果只用某个模块还可以输入该模块的位置来精准导入头文件如:
#include<opencv2\highgui\highgui.hpp>。
using namespace cv;是应用命名空间否则需要在每个opencv函数前加cv::,如cv::imread(“D:/t.jpg”);
namedWindow(“winname”);是新建一个窗口类,窗口标题名为winname
Mat src=imread(“D:/t.jpg”);读取图片数据返回该数据,类型为Mat类
imshow(“src-window”,src);显示图片data到指定窗口。
waitKey(0);等待任意按键按下,否则一直停留,阻塞函数。输入5000可以延迟5000毫秒,输入’r’则等待r键按下。
接着上边代码
保存图片:
imwrite("D:/s.jpg", src);
压缩图片质量后保存:
vector<int> v;//向量 -----动态数组模板类 指定类型而不需要指定大小,动态变化
v.push_back(CV_IMWRITE_JPEG_QUALITY);//添加元素
v.push_back(2);
imwrite("D:/s.jpg", src, v);