OpenCV学习记录(1) - 图像载入、显示、输出


1.图像载入

1.1 imread()

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

从文件中加载图像。

参数说明

  • filename:要载入的图片。
  • flags:图片加载的颜色类型标志
    • CV_LOAD_IMAGE_ANYDEPTH - (=2) 如果取该参数,当输入的是16位/ 32位图像时,返回对应深度的图像,否则,将其转换为8位图像。

    • CV_LOAD_IMAGE_COLOR - 如果取该参数,则始终将图像转换为颜色。

    • CV_LOAD_IMAGE_GRAYSCALE - (=0) 如果取该参数,始终将图像转换为灰度图像。

    • > 0 - 返回3通道彩色图像。
      注意,此时无alpha通道(如果原图像有)。
      如果需要Alpha通道,请使用负值。

    • = 0 - 返回灰度图像。

    • < 0 - 按原样返回加载的图像(包括Alpha通道)。**


2.图像显示

2.1 namedWindow()

创建一个窗口。

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

参数说明

  • winname - 窗口的名称。
  • flags - 支持的标志:
    • WINDOW_NORMAL - 用户可以手动调整窗口大小(无约束)。
    • **WINDOW_AUTOSIZE** - 默认,自动调整窗口大小以适合显示的图像,无法手动更改窗口大小。
    • WINDOW_OPENGL - 如果设置了此项,将使用OpenGL支持创建窗口。

注:我们可以调用destroyWindow()或者destroyAllWindows()函数来关闭窗口,并取消之前分配的与窗口相关的所有内存空间。

但对于代码量不大的简单小程序来说,我们完全没有必要手动调用上述的destroyWindow()或者destroyAllWindows()函数,因为在退出时,所有的资源和应用程序的窗口会被操作系统会自动关闭
(引自毛星云博客)


2.2 imshow()

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

参数

  • winname - 窗口的名称。namedWindow()中的窗口名称winname
  • mat - InputArray 类型的Mat,简单的当做Mat。

注:

imshow 函数用于在指定的窗口中显示图像。如果窗口是用CV_WINDOW_AUTOSIZE(默认值)标志创建的,那么显示图像原始大小。否则,将图像进行缩放以适合窗口。而imshow函数缩放图像,取决于图像的深度:

  1. 如果载入的图像是8位无符号类型(8-bit unsigned),就显示图像本来的样子。
  2. 如果图像是16位无符号类型(16-bit unsigned)或32位整型(32-bit integer),便用像素值除以256。也就是说,值的范围是[0,255 x 256]映射到[0,255]。
  3. 如果图像是32位浮点型(32-bit
    floating-point),像素值便要乘以255。也就是说,该值的范围是[0,1]映射到[0,255]。
    (引自毛星云博客)

3.图像输出

3.1 imwrite()

将图片保存到指定文件中。

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

参数

  • filename - 保存的文件名。
  • img - InputArray 类型的Mat。

猜你喜欢

转载自blog.csdn.net/weixin_39129504/article/details/85995615