我正在参加「掘金·启航计划」
读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时,您也需要首先读入图像。所以掌握这些基本操作很重要。
OpenCV,世界上最大的计算机视觉库,有这三个内置函数,让我们看看每一个函数到底是做什么的:
imread()
帮助我们阅读图像imshow()
在窗口中显示图像imwrite()
将图像写入文件目录
我们将使用下图来演示这里的所有功能。
首先,浏览一下这个代码示例(Python)。它读取并显示上面的图像。看,它如何包含我们刚才提到的所有三个功能。当您继续进行时,我们将讨论此实现中使用的每个函数。 为了方便学习,我这里不在代码框里贴代码,我贴图片吧
Python
读取图像
要读取图像,请使用imread()
OpenCV 中的函数。语法如下:
imread(filename, flags)
它需要两个参数:
- 第一个参数是图像名称,它需要文件的完全限定路径名。
- 第二个参数是一个可选标志,可让您指定如何表示图像。OpenCV 为该标志提供了多种选项,但最常见的包括:
cv2.IMREAD_UNCHANGED
或者-1
cv2.IMREAD_GRAYSCALE
或者0
cv2.IMREAD_COLOR
或者1
标志的默认值为 1,它将在图像中读取为彩色图像。当您想读取特定格式的图像时,只需指定适当的标志即可。要查看不同的标志选项,请单击此处
在这一点上还需要注意的是,OpenCV 以 BGR ****格式读取彩色图像,而大多数其他计算机视觉库使用 RGB 通道格式顺序。因此,当将 OpenCV 与其他工具包一起使用时,当您从一个库切换到另一个库时,不要忘记交换蓝色和红色通道。
如下面的代码部分所示,我们将首先使用上述所有三个标志值读取测试图像。
Python
显示图像
在 OpenCV 中,您可以使用该函数显示图像imshow()
。语法如下:
imshow(window_name, image)
该函数还带有两个参数:
- 第一个参数是将显示在窗口上的窗口名称。
- 第二个参数是您要显示的图像。
要一次显示多个图像,请为要显示的每个图像指定新的窗口名称。
该imshow()
函数设计为与waitKey()
and destroyAllWindows()
/destroyWindow()
函数一起使用。
该waitKey()
函数是键盘绑定函数。
- 它需要一个参数,即窗口显示的时间(以毫秒为单位)。
- 如果用户在此时间段内按任意键,程序将继续。
- 如果传递 0,程序将无限期地等待击键。
- 您还可以设置功能来检测特定的击键,例如键盘上的 Q 键或 ESC 键,从而更明确地告诉哪个键应该触发哪个行为。
该函数destroyAllWindows()
销毁我们创建的所有窗口。如果需要销毁特定的窗口,请将确切的窗口名称作为参数。使用destroyAllWindows()
还可以从系统的主内存中清除窗口或图像。下面的代码示例显示了如何imshow()
使用该函数来显示您读入的图像。
在下面显示的三个输出屏幕中,您可以看到:
- 第一张图像以彩色显示
- 下一个为灰度
- 第三个也是彩色的,因为这是图像的原始格式(使用 读取
cv2.IMREAD_UNCHANGED
)
使用该函数以彩色显示图像imshow()
。
使用该函数以灰度显示图像imshow()
。
使用该函数显示未更改的图像imshow()
。
写一个图像
最后,我们讨论如何使用该函数将图像写入/保存到文件目录中imwrite()
。查看它的语法:
imwrite(filename, image)
.
- 第一个参数是文件名,必须包含文件扩展名(例如 .png、.jpg 等)。OpenCV 使用此文件扩展名来指定文件的格式。
- 第二个参数是您要保存的图像。
True
如果图像保存成功,该函数将返回。
看看下面的代码。看看将图像写入磁盘是多么简单。只需指定文件名及其正确的扩展名(前面加上任何所需的路径)。添加包含图像数据的变量名称,就完成了。
概括
在这里,您学会了使用:
-
imread()
,imshow()
以及imwrite()
读取、显示和写入图像的函数 -
waitKey()
和destroyAllWindows()
功能,以及显示功能- 按键时关闭图像窗口
- 并从内存中清除所有打开的图像窗口。