图像的读取与显示

图像读取函数imread

imread()函数的原型:

Mat imread(const String & filename,
           int flags = IMRAD_COLOR
          )
  • filname:需要读取图像的文件名称,包含图像地址、名称、和图像文件扩展名
  • flags:读取图像形式的标志

imread()函数读取图像形式参数

标记参数 简记 作用
IMREAD_UNCHANGED -1 按照图像原样读取,保留Alpha通道(第四通道)
IMREAD_GRAYSCALE 0 将图像转成单通道灰度图像后读取
IMREAD_COLOR 1 将图像转成3通道BGR彩色图像
IMREAD_ANYDEPTH 2 保留原图像的16位、32位深度,不声明该参数则转成8位读取
IMREAD_ANYCOLOR 4 以任何可能的颜色读取图像
IMREAD_LOAD_GDAL 8 使用gdal驱动程序加载图像
IMREAD_REDUCED_GRAYSCALE_2 16 将图像转成单通道灰度图像,尺寸缩小1/2,可以更改最后一位数字
IMREAD_REDUCED_COLOR_2 17 将图像转成3通道彩色图像,尺寸缩小1/2,可以更改最后一位数字
IMREAD_IGNORE_ORIENTATION 128 不以EXIF的方向旋转图像

图像窗口函数namedWindow

namedWindow函数的原型

void namedWindow(const String & winname,
                 int flags = WINDOW_AUTOSIZE
                )
  • winname:窗口名称,用作窗口的标识符
  • flags:窗口属性设置标志

该函数会创建一个窗口变量,用于显示图像和滑动条,通过窗口的名称引用该窗口

如果在创建窗口时已经存在具有相同名称的窗口,则该函数不会执行任何操作

OpenCV提供了2个关闭窗口资源的函数

destroyWindow()函数和destroyWindows()

前一个用于关闭一个指定名称窗口,后一个函数用于关闭程序中的所有窗口

namedWindows()函数窗口属性标志参数:

标志参数 简记 作用
WINDOW_NORMAL 0x00000000 显示图像后,允许用户随意调整窗口大小
WINDOW_AUTOSIZE 0x00000001 根据图像大小显示窗口,不允许用户调整大小
WINDOW_OPENGL 0x00001000 创建窗口的时候会支持OpenGL
WINDOW_FULLSCREEN 1 全屏显示窗口
WINDOW_FREERATIO 0x00000100 调整图像尺寸以充满窗口
WINDOW_KEEPRATIO 0x00000000 保持图像的比例
WINDOW_GUI_EXPANDED 0x00000000 创建的窗口允许添加工具栏和状态栏
WINDOW_GUI_NORMAL 0x00000010 创建没有工具栏和状态栏的窗口

图像显示函数imshow

imshow()函数的原型:

void imshow(const String & winname,
            InputArray mat
           )
  • winname:要显示图像的窗口的名称,用字符串形式赋值
  • mat:要显示的图像矩阵

如果此函数之前没有创建同名的图像窗口,就会与WINDOW_AUTOSIZE标志创建一个窗口,显示图像的原始大小

如果创建了一个窗口,那么就会缩放图像以适应窗口属性

  • 如果是8位无符号类型,那么按原样显示
  • 如果是16位无符号类型或32位整数类型,那么会将像素除以256,将范围[0,255*256] 映射到[0,255]
  • 如果是32位或64位浮点类型,那么会将像素乘以256,将范围[0,1] 映射到[0,255]

imshow()函数后常常跟有 waitKey()函数,用于将程序暂停一段时间,以ms为单位进行秒计,参数默认或为“0”,那么等待用户按键结束

results matching ""

    No results matching ""