opencv入门1:二行代码,快速上手


#include 
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()函数的作用是通过指定的名字,创建一个可以作为图像和进度条的容器窗口。

如果具有相同名称的窗口已经存在,则函数不做任何事情。

你可能感兴趣的:(OpenCV,opencv,计算机视觉)