参考1图像简单显示与保存,做自己的笔记
Mat类简单介绍
Mat类可以用来保存图像以及其他矩阵数据的数据结构,默认情况下其尺寸为0。更详细的将会在以后的文章中继续介绍。
读入图像:imread()函数
Mat imread( const String& filename, int flags = IMREAD_COLOR );
第一个参数:放入打算读入的图像的路径。
这里有三点要值得注意的地方,①要用” ”双引号(英文下)将路径括起来。②路径见要用两个斜线\\分割。③要记得图像格式别忘记写。
上图中,第一种写法,即图像在当前项目文件夹中;
其中这个路径:
cv::Mat cv::imread(
const &string filename,
int flags=1)
//文件在当前目录下
Mat img=imread("test.jpg");
//不在当前目录
//使用双反斜杠
img=imread("folder\\folder2\\test.jpg");
img=imread("c:\\images\\test.jpg");
//或使用单斜杠
img=imread("folder/folder2/test.jpg");
img=imread("c:/images/test.jpg");
双反斜杠和单斜杠都是合法的
第二张为:自定义图像的路径。
第二个参数:默认值是1,表示的是载入三通道彩色图像。
Mat imread( const String& filename, int flags )
{
/// create the basic container
Mat img;
/// load the data
imread_( filename, flags, LOAD_MAT, &img );
/// return a reference to the data
return img;
}
显示图像:imshow()函数
Mat img = imread("D:\\demo01.jpg");
imshow("pp的靓照", img);
保存图像:imwrite()函数
bool imwrite( const String& filename, InputArray _img,
const std::vector<int>& params )
{
Mat img = _img.getMat();
return imwrite_(filename, img, params, false);
}
//=============================================
//功能:图像显示与保存
//2018年4月15日9:19:39
//=============================================
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//【1】读取原始图像
Mat srcImage;
//srcImage = imread("demo01.jpg", IMREAD_COLOR);//第一个参数为要读入的图像;第二个参数默认值为1,即IMREAD_COLOR,这个参数可以省略不写;
srcImage = imread("demo01.jpg");
//【2】检查是否读取图像成功
if (srcImage.empty())
{
cout << "读取图像有误,请重新输入正确路径!\n";
return -1;
}
//【3】创建具有图像名称的窗口
namedWindow("原始图", WINDOW_AUTOSIZE);
//【4】在窗口中显示图片
imshow("原始图", srcImage);
//【5】保存图像
imwrite("保存的图像.jpg", srcImage);
//【6】保持等待状态
waitKey();//括号里可以填任意正整数,意味着,图像显示的毫秒时间
return 0;
}
注意:
还是老话题,2.2版本对OpenCV可是进行了大刀阔斧的改革,用c++重新了大部分结构,而不是1.X版本中的c结构。这些模块包括:
core——定义了基本数据结构,包括最重要的Mat和一些其他的模块
imgproc——该模块包括了线性和非线性的图像滤波,图像的几何变换,颜色空间转换,直方图处理等等
video——该模块包括运动估计,背景分离,对象跟踪
calib3d——基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建
features2d——显著特征检测,描述,特征匹配
objdetect——物体检测和预定义好的分类器实例(比如人脸,眼睛,面部,人,车辆等等)
highgui——视频捕捉、图像和视频的编码解码、图形交互界面的接口
gpu——利用GPU对OpenCV模块进行加速算法
ml——机器学习模块(SVM,决策树,Boosting等等)
flann——Fast Library for Approximate Nearest Neighbors(FLANN)算法库
legacy——一些已经废弃的代码库,保留下来作为向下兼容
还有一些其他的模块,比如FLANN算法库、Google测试包、Python bingdings等等。