Opencv+Python(1):Getting started with image

时间:2021-05-20 06:02:18

 

图像入门

目标

  • 在这里,您将学习如何阅读图像,如何显示图像以及如何保存图像
  • 你将学习这些函数:cv2.imread()cv2.imshow()cv2.imwrite()
  • 或者,您将学习如何使用Matplotlib显示图像

使用OpenCV

阅读一张图片

使用函数cv2.imread()来读取图像。图像应该在工作目录中,或者应该给出图像的完整路径。

第二个参数是一个标志,用于指定应读取图像的方式。

  • cv2.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。
  • cv2.IMREAD_GRAYSCALE:以灰度模式加载图像
  • cv2.IMREAD_UNCHANGED:加载包含Alpha通道的图像

注意

而不是这三个标志,你可以简单地传递整数1,0或-1。

请参阅下面的代码:

import  numpy  as  np  import  cv2 #以灰度图 格式加载彩色图像img  =  cv2 imread 'messi5.jpg' 0  

警告

即使图像路径错误,它也不会抛出任何错误,但会给你print imgNone

显示图像

使用函数cv2.imshow()在窗口中显示图像。该窗口自动适合图像大小。

第一个参数是一个窗口名称,它是一个字符串。第二个论据是我们的形象。您可以根据需要创建多个窗口,但使用不同的窗口名称。

cv2 imshow 'image' img  cv2 waitKey 0  cv2 destroyAllWindows () 

该窗口的屏幕截图如下所示(在Fedora-Gnome机器中):

Opencv+Python(1):Getting started with image

cv2.waitKey()是一个键盘绑定函数。它的论点是以毫秒为单位的时间。该函数等待指定的毫秒为任何键盘事件。如果在那段时间按任意键,程序会继续。如果传递0,它将无限期地等待键击。它也可以设置为检测特定的按键笔画,例如,如果按键a被按下等,我们将在下面讨论。

cv2.destroyAllWindows()只是销毁我们创建的所有窗口。如果你想销毁任何特定的窗口,使用函数cv2.destroyWindow()作为参数传递确切的窗口名称。

注意

有一种特殊情况,您可以在后面创建窗口并加载图像。在这种情况下,您可以指定窗口是否可调整大小。它使用函数cv2.namedWindow()完成默认情况下,该标志是cv2.WINDOW_AUTOSIZE但是,如果您指定标志cv2.WINDOW_NORMAL,您可以调整窗口大小。当图像尺寸过大并将轨迹条添加到窗口时,这会很有帮助。

请参阅下面的代码:

cv2 namedWindow '图像'  CV2 WINDOW_NORMAL  CV2 imshow 'image' img  cv2 waitKey 0  cv2 destroyAllWindows () 

写一张图片

使用函数cv2.imwrite()保存图像。

第一个参数是文件名,第二个参数是要保存的图像。

cv2 imwrite 'messigray.png' img  

这会将图像以PNG格式保存在工作目录中。

总结一下

在程序下方加载灰度图像,显示图像,按's'保存图像并退出,或者按ESC退出而不保存

import  numpy  as  np  import  cv2 img  =  cv2 imread 'messi5.jpg' 0  cv2 imshow 'image' img  k  =  cv2 waitKey 0  如果 k  ==  27  #等待ESC键退出 cv2 destroyAllWindows () elif  k  ==  ord 's' ): #等待's'键保存并退出 cv2 imwrite 'messigray.png' img  cv2 destroyAllWindows () 

警告

如果您使用的是64位机器,则必须按如下方式修改行:cv2.waitKey(0)cv2.waitKey(0) 0xFF

使用Matplotlib

Matplotlib是Python的绘图库,它为您提供了各种各样的绘图方法。你会在即将发表的文章中看到它们。在这里,您将学习如何使用Matplotlib显示图像。你可以放大图像,使用Matplotlib保存等。

导入 numpy的  NP  进口 CV2   matplotlib  进口 pyplot   PLT img  =  cv2 imread 'messi5.jpg' 0  plt imshow img  cmap  =  'gray'  interpolation  =  'bicubic'  plt xticks ([]), plt yticks ([]) #隐藏X轴和Y轴上的刻度值 plt show () 

窗口的屏幕截图如下所示:

Opencv+Python(1):Getting started with image

也可以看看

Matplotlib提供了大量的绘图选项。有关更多详细信息,请参阅Matplotlib文档。有些,我们会在途中看到。

警告

OpenCV加载的彩色图像处于BGR模式。但Matplotlib以RGB模式显示。因此,如果使用OpenCV读取图像,则彩色图像将无法在Matplotlib中正确显示。请参阅练习以获取更多详细信息。

演习

  1. 尝试在OpenCV中加载彩色图像并将其显示在Matplotlib中时出现问题。阅读这个讨论并理解它。