天天看点

Opencv学习(二)之图片的加载、显示与保存

1. imread()函数

在Opencv中如果想加载一副图片用imread()函数。

2.imshow()函数

在Opencv中如果想在窗口显示一副图像用imshow()函数。

有时在imshow()函数之前使用nameWindows() 函数创建特定的窗口,用来显示图像。

3.imwrite()函数

在Opencv中可以调用imwrite()函数将处理后的图像写入指定的文件目录。

下面先通过实例演示说明以上几个函数的用法,再就其用法进行介绍。

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat srcImage = imread("D:\\Tencent\\test.jpg", IMREAD_COLOR);      
	namedWindow("Opencv图像读取-origin", WINDOW_AUTOSIZE);  //创建一个名字为“Opencv图像读取-origin”的窗口,窗口属性为自适应
	imshow("Opencv图像读取-origin", srcImage);          //显示读入的图像,窗口名称与namedWindow中名字要一致


	Mat srcImageGray;                       //创建一个Mat类型用于存储将读取到的彩色图像转换为灰度图之后的图像
	cvtColor(srcImage, srcImageGray, CV_RGB2GRAY);      //使用函数CV_RGB2GRAY将彩色图像转换为灰度图
	namedWindow("to灰度图", WINDOW_NORMAL);
	imshow("to空灰度图", srcImageGray);
	imwrite("to灰度图.jpg", srcImageGray);          //将转换的灰度图以.bmp格式存储,默认路径为工程目录下


	waitKey(0);


	return 0;
}
           

注:以上程序代码为学习他人博客,并非原创。

运行结果如下:

Opencv学习(二)之图片的加载、显示与保存
Opencv学习(二)之图片的加载、显示与保存

下面对以上四个函数的用法做一简单总结:

1-imread()函数,用来读取要加载的图像,定义如下:

CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
           

第一个参数为待读取图片的名称(当图片不在工程目录下时还要包含图片路径,如例程所示),第二个参数为图片的标识,可指定加载图片的类型,初学阶段暂且使用默认设置(如例程所示)。

第二个参数还有另外一种设置方法,如下所示:

flags>0 :返回一个3通道的彩色图像;

flags=0 :返回灰度图像;

flags>0 :返回一个包含Alpha通道的图像;(默认情况不是从该通道载入)

2-nameWindows()函数

函数原型如下:

CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
           

第一个参数为窗口名;第二个参数为窗口属性(初学阶段暂且设置为WINDOW_AUTOSIZE,表示窗口大小随显示图片的大小自动调整)。

3-imshow()函数

函数原型如下:

CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
           

第一个参数为窗口名,表示在该窗口上显示图像(注:如果在imshow()函数之前没有使用nameWindows()函数,则第一个参数的窗口名称任意,否则要与nameWindows()中创建的窗口名称一致);第二个参数为要显示的图像(具体用法参考例程)。

4-imwrite()函数

函数原型如下:

CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
           

第一个参数:给要保存的图像命名(要包含后缀);第二个参数:要保存的图像;第三个参数:保存为特定格式。

(注:对于初次使用博客的学习者来说,可能不会上传运行的效果图,不妨尝试用下imwrite()函数保存后再上传。)

最后,对于例程中出现的其它函数,将在后面的学习中逐一介绍,暂且通过例程了解其用法。