欢迎加入“OpenCV学习交流”QQ群:290295071
#include <opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("lena.jpg"); // 读取图片
imshow("img_window", img); // 显示图片
waitKey();
return 0;
}
上述代码是完整内容,真正用于读取和显示代码,调用到opencv接口的只有带注释的第6、7行。当然工程能够正常编译和执行的前提是要配置好opencv库。具体配置方法可自行baidu,改天博主也可补充一偏配置文档。
如读者仅参考基本使用,可不必继续读下面的详解。想了解函数更详细使用方法的读者可以继续。
下面具体来介绍今天的两个主要角色,imread()和imshow()。
1.imread()函数
1.1函数作用
imread()函数的名称是image read的缩写,其作用为图像读取。
1.2函数c++原型
Mat cv::imread( const String & filename, int flags = IMREAD_COLOR )
imread()函数原型较简单:输入参数2个,说明要读取的图片名称filename和读取方式flags;即可返回要读取的图片Mat型数据。
具体可以总结为三点:
-
返回值为读取的图像,类型为Mat数据,读取图像失败时返回一个空的矩阵对象(Mat::data == NULL);
-
参数1 filename,读取的图片文件名,带路径信息,可以使用相对路径或者绝对路径,无显式路径时默认为工程所在的当前文件夹;必须带完整的文件扩展名(图片格式后缀),常见的图片格式基本都支持,具体类型参见wiki;
-
参数2 flags,读取标记,用于选择读取图片的方式,默认值为IMREAD_COLOR,flag值的设定与用什么颜色格式读取图片有关。
1.3 imread()参数2 flags补充:
flags值被定义在enum cv::imreadModes枚举类里面
参数 | 说明 |
IMREAD_UNCHANGED | 如果设置,则按原样返回加载的图像(使用Alpha通道,否则会被裁剪) |
IMREAD_GRAYSCALE | 如果设置,则始终将图像转换为单通道灰度图像(编解码器内部转换)。 |
IMREAD_COLOR | 如果设置,请始终将图像转换为3通道BGR彩色图像。 |
IMREAD_ANYDEPTH | 如果设置,则在输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位。 |
IMREAD_ANYCOLOR | 如果设置,则以任何可能的颜色格式读取图像。 |
IMREAD_LOAD_GDAL | 如果设置,使用gdal驱动程序加载图像 |
IMREAD_REDUCED_GRAYSCALE_2 | 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/2。 |
IMREAD_REDUCED_COLOR_2 | 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/2。 |
IMREAD_REDUCED_GRAYSCALE_4 | 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/4 |
IMREAD_REDUCED_COLOR_4 | 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/4 |
IMREAD_REDUCED_GRAYSCALE_8 | 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/8。 |
IMREAD_REDUCED_COLOR_8 | 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/8。 |
IMREAD_IGNORE_ORIENTATION | 如果设置,请不要根据EXIF的方向标志旋转图像。 |
2.imshow()函数
2.1函数作用
imshow()函数的名称是image show的缩写,其作用为显示图像。
2.2函数原型
void imshow(const String& winname, InputArray mat);
如果imshow()前面没有namedWindow(),则调用imshow()时会自动先执行一个namedWindow()。
如果imshow()显示出来的窗口大小需要调整时,必须使用namedWindow()。
2.3 namedWindow()函数的原型
void cv::namedWindow(const String & winname, int flags = WINDOW_AUTOSIZE)
2.4 namedwindow()参数2 flags补充:
标志参数 | 说明 |
WINDOW_NORMAL | 显示图像后,允许用户随意调整窗口大小 |
WINDOW_AUTOSIZE | 根据图像大小显示窗口,不允许用户调整大小 |
WINDOW_OPENGL | 创建窗口的时候会支持OpenGL |
WINDOW_FULLSCREEN | 全屏显示窗口 |
WINDOW_FREERATIO | 调整图像尺寸以充满窗口 |
WINDOW_KEEPRATIO | 保持图像的比例 |
WINDOW_GUI_EXPANDED | 创建的窗口允许添加工具栏和状态栏 |
WINDOW_GUI_NORMAL | 创建没有状态栏和工具栏的窗口 |
namedWindow()函数的作用是通过指定的名字,创建一个可以作为图像和进度条的容器窗口。
如果具有相同名称的窗口已经存在,则函数不做任何事情。