【2】OpenCV入门-读取、显示、存储一幅图像

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()显示了窗口之后才有作用。

结果:

发布了7 篇原创文章 · 获赞 18 · 访问量 1901

猜你喜欢

转载自blog.csdn.net/qq_37981695/article/details/104203286