OpenCV-读取展示及保存

读取

函数原型

1
2
3
4
5
6
7
8
9
/*
* fileName 可以是绝对路径也可以是相对路径
* flags
* IMREAD_UNCHANGED(-1):imread按解码得到的方式读入图像
* IMREAD_GRAYSCALE(0):imread按单通道的方式读入图像,即灰白图像
* IMREAD_COLOR(1):imread按三通道方式读入图像,即彩色图像
*/
Mat cv::imread(const string& fileName,
int flags=IMREAD_COLOR);

实例

1
Mat mat = imread("imgPath");//读取,imaPath可以是绝对路径也可以是相对路径

展示

函数原型

1
2
3
4
5
6
/*
* winname 窗口名称
* mat 需要显示的图像数据
*/
void cv::imshow(const string& winname,
InputArray mat = IMREAD_COLOR);

实例

1
2
Mat mat = imread("fish.jpg");//imaPath可以是绝对路径也可以是相对路径
imshow("windowTitle",mat);//展示

展示规则

另外根据图像类型,imshow函数会自动对其显示灰度值进行缩放,规则如下:

  1. 如果图像数据类型是8U(8位无符号),则直接显示。
  2. 如果图像数据类型是16U(16位无符号)或32S(32位有符号整数),则imshow函数内部会自动将每个像素值除以256并显示,即将原图像素值的范围由[0255*256]映射到[0255]。
  3. 如果图像数据类型是32F(32位浮点数)或64F(64位浮点数),则imshow函数内部会自动将每个像素值乘以255并显示,即将原图像素值的范围由[01]映射到[0255](注意:原图像素值必须要归一化)。

保存

函数原型

1
2
3
4
5
6
7
8
/*
* filename 文件路径,需带后缀
* img 图像数据来源
* params 设置对应图片格式
*/
bool cv::imwrite(const string& filename,
InputArray img,
const std::vector<int>& params = std::vector<int>());

实例

1
2
Mat mat;
imwrite("imgPath",mat);//保存