1.涉及函数
(1)imread
函数原型: Mat imread(const string& filename, int flags=1)
参数说明:①filename:文件名。②flags:加载图片的方式
备注:imread支持的文件类型:
Windows位图:*bmp,*dib
JPEG文件;*jpeg,*jpg,*jpe
JPEG2000文件:*j2
PNG图片:*png
便携文件格式:*pbm,*pgm,*pm
Sun rasters光栅文件:*s,*ras
flags的类型:
CV_LOA_ IMAGE_UNCHANGED等价取值为-1,这个标识在新版本中已被废置,忽略。
CV_LOAD_IMAGE_GRAYSCALE——等价取值为0,如果取这个标识的话,始终将图像转换成灰度再返回。
CV_LOAD_IMAGE_COLOR—等价取值为1,如果取这个标识,总是转换图像到彩色再返回。
CV_LOAD_IMAGE_ANYDEPTH等价取值为2,如果取这个标识,且载入的图像的深度为16位或者32位,就返回对应深度的图像,否则,就转换为8位图像再返回。
重点关注中间两个枚举类型即可。
(2)namedWindow
函数原型:void namedwindow(const string& winname, int flags=WINDOW_AUTOSIZE);
参数说明:①winname:窗口的名称,窗口的唯一识别标志。②flags:窗口的标志
备注:窗口标志flags的说明:
WINDOW_NORMAL,设置这个值,用户可以改变窗口的大小(没有限制)。OpenCV2中它还可以写为 CV_WINDOW_NORMAL
WINDOW_AUTOSIZE,设置这个值,窗口大小会自动调整以适应所显示的图像,并且用户不能手动改变窗口大小。 OpenCV2中它还可以写为CV_WINDOW_AUTOSIZE。
WINDOW_OPENGL,设置这个值,窗口创建的时候会支持 OpenGL OpenCV2中它还可以写为
CV_WINDOW_OPENGL。
(3) imshow
函数原型:void imshow(const string& winname, InputArray mat)
(4)imwrite
函数原型:bool imwrite(const string& filename, InputArray img, const vector<int> params=vector<int>())
参数说明:params:表示为特定格式保存的参数编码。
对于JPEG格式的图片,这个参数表示从0到100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95。
对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0到9.较高的值意味着更小的尺寸和更长的压缩时间,默认值是3。其他不重要的就不说了。
2.代码演示
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
//【1】加载图像
Mat src = imread("E:/OneDrive/ProgramFolder/image/test.jpg");
if (src.empty())
{
printf("could not load the image");
return -1;
}
//【2】显示图像
namedWindow("srcImage");
imshow("srcImage", src);
//【3】保存图像
imwrite("dst.png", src);
waitKey(0);
return 0;
}
代码说明:waitKey()-是等待按键按下的函数,传入0表示一直等待。此函数只有在imshow()显示了窗口之后才有作用。
结果: