使用 OpenCV 读取、显示和写入图像

我正在参加「掘金·启航计划」

读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时,您也需要首先读入图像。所以掌握这些基本操作很重要。

OpenCV,世界上最大的计算机视觉库,有这三个内置函数,让我们看看每一个函数到底是做什么的:

  1. imread()帮助我们阅读图像
  2. imshow()在窗口中显示图像
  3. imwrite()将图像写入文件目录

我们将使用下图来演示这里的所有功能。

image.png

首先,浏览一下这个代码示例(Python)。它读取并显示上面的图像。看,它如何包含我们刚才提到的所有三个功能。当您继续进行时,我们将讨论此实现中使用的每个函数。 为了方便学习,我这里不在代码框里贴代码,我贴图片吧

Python

image.png

读取图像

要读取图像,请使用imread() OpenCV 中的函数。语法如下:

imread(filename, flags)

它需要两个参数:

  1. 第一个参数是图像名称,它需要文件的完全限定路径名。
  2. 第二个参数是一个可选标志,可让您指定如何表示图像。OpenCV 为该标志提供了多种选项,但最常见的包括:
  • cv2.IMREAD_UNCHANGED  或者-1
  • cv2.IMREAD_GRAYSCALE  或者0
  • cv2.IMREAD_COLOR  或者1

标志的默认值为 1,它将在图像中读取为彩色图像。当您想读取特定格式的图像时,只需指定适当的标志即可。要查看不同的标志选项,请单击此处

在这一点上还需要注意的是,OpenCV 以 BGR ****格式读取彩色图像,而大多数其他计算机视觉库使用 RGB 通道格式顺序。因此,当将 OpenCV 与其他工具包一起使用时,当您从一个库切换到另一个库时,不要忘记交换蓝色和红色通道。

如下面的代码部分所示,我们将首先使用上述所有三个标志值读取测试图像。

image.png

Python

显示图像

在 OpenCV 中,您可以使用该函数显示图像imshow()。语法如下:

imshow(window_name, image)

该函数还带有两个参数:

  1. 第一个参数是将显示在窗口上的窗口名称。
  2.  第二个参数是您要显示的图像。 

要一次显示多个图像,请为要显示的每个图像指定新的窗口名称。 

imshow()函数设计为与waitKey()and destroyAllWindows()/destroyWindow()函数一起使用。 

waitKey()函数是键盘绑定函数。 

  • 它需要一个参数,即窗口显示的时间(以毫秒为单位)。
  • 如果用户在此时间段内按任意键,程序将继续。
  • 如果传递 0,程序将无限期地等待击键。
  • 您还可以设置功能来检测特定的击键,例如键盘上的 Q 键或 ESC 键,从而更明确地告诉哪个键应该触发哪个行为。 

该函数destroyAllWindows()销毁我们创建的所有窗口。如果需要销毁特定的窗口,请将确切的窗口名称作为参数。使用destroyAllWindows()还可以从系统的主内存中清除窗口或图像。下面的代码示例显示了如何imshow()使用该函数来显示您读入的图像。

image.png
在下面显示的三个输出屏幕中,您可以看到:

  1.  第一张图像以彩色显示
  2.  下一个为灰度
  3. 第三个也是彩色的,因为这是图像的原始格式(使用 读取cv2.IMREAD_UNCHANGED

使用该函数以彩色显示图像imshow()
image.png

使用该函数以灰度显示图像imshow()
image.png

使用该函数显示未更改的图像imshow()

image.png

写一个图像

最后,我们讨论如何使用该函数将图像写入/保存到文件目录中imwrite()。查看它的语法:

imwrite(filename, image).

  1. 第一个参数是文件名,必须包含文件扩展名(例如 .png、.jpg 等)。OpenCV 使用此文件扩展名来指定文件的格式。 
  2. 第二个参数是您要保存的图像。True如果图像保存成功,该函数将返回。

看看下面的代码。看看将图像写入磁盘是多么简单。只需指定文件名及其正确的扩展名(前面加上任何所需的路径)。添加包含图像数据的变量名称,就完成了。

image.png

概括

在这里,您学会了使用: 

  • imread()imshow()以及imwrite()读取、显示和写入图像的函数 

  • waitKey()destroyAllWindows()功能,以及显示功能 

    • 按键时关闭图像窗口
    • 并从内存中清除所有打开的图像窗口。

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYHQYS4O' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片