写点什么

Python- 计算机视觉 -OpenCV-Image

用户头像
Aldeo
关注
发布于: 2021 年 03 月 22 日
Python-计算机视觉-OpenCV-Image

学习目标


将学习如何读取图像、如何显示图像以及如何保存图像。

学习这些函数: cv2.imread () ,cv2.imshow () ,cv2.imwrite ()。

学习如何使用 Matplotlib 显示图像。

Read an image 读取图像

import numpy as npimport cv2 # Load an color image in grayscaleimg = cv2.imread('messi5.jpg',0)
复制代码

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

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

  • cv2.IMREAD_COLOR :加载彩色图像。 任何图像的透明度都会被忽视。 它是默认标志

  • cv2.IMREAD_GRAYSCALE:以灰度模式加载图像

  • cv2.IMREAD_UNCHANGED:加载包括 alpha 通道在内的图像


注意:

除了这三个标志,您还可以简单地分别传递整数 1、0 或 -1。

即使图像路径是错误的,它也不会抛出任何错误,但是 print img 会给出 None


Display an image 显示图像

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

img = cv2.imread('11.jpg',cv2.IMREAD_COLOR)cv2.namedWindow('image', cv2.WINDOW_NORMAL)cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()
复制代码


aitkey ()是一个键盘绑定函数。 其参数是以毫秒为单位的时间。 该函数等待任何键盘事件指定的毫秒。 如果您在这段时间内按下任何键,程序将继续运行。 如果 0 被传递,它将无限期地等待一次敲击键。 它也可以设置为检测特定的按键,例如,如果按下键 a 等,我们将在下面讨论。


Destroyallwindows ()只会破坏我们创建的所有窗口。 如果您想要销毁任何特定的窗口,可以使用函数 cv2.destroyWindow () ,在该函数中将确切的窗口名称作为参数传递。


注意:

在特殊情况下,您可以先创建一个窗口,然后再将图像加载到该窗口。 在这种情况下,您可以指定窗口是否可以调整大小。 它是通过函数 cv2.namedWindow ()实现的。 默认情况下,标志是 cv2.WINDOW AUTOSIZE。 但是如果您将标志指定为 cv2.WINDOW NORMAL,则可以调整窗口的大小。 当图像尺寸太大时,在窗口添加跟踪条会很有帮助。


读取图片如下截图



Write an image 写一张图

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

img = cv2.imread('11.jpg',cv2.IMREAD_COLOR)cv2.imwrite('messigray.png',img)
复制代码

第一个参数是文件名,第二个参数是要保存的图像。这将以 PNG 格式保存图像到工作目录中。

Sum it up 总结一下


下面的程序加载一个图像的灰度,显示它,保存图像,如果你按's'和退出,或只是退出没有保存,如果你按 ESC 键。

import numpy as npimport cv2 img = cv2.imread('messi5.jpg',0)cv2.imshow('image',img)k = cv2.waitKey(0)if k == 27:         # wait for ESC key to exit    cv2.destroyAllWindows()elif k == ord('s'): # wait for 's' key to save and exit    cv2.imwrite('messigray.png',img)    cv2.destroyAllWindows()
复制代码


注意:

如果您使用的是 64 位机器,则必须修改如下 kcv2.waitkey (0)行: kcv2.waitkey (0) & 0xFF


拓展-使用 Matplotlib


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


若没下载,请执行

pip install matplotlib
复制代码

使用

import numpy as npimport cv2from matplotlib import pyplot as plt img = cv2.imread('messi5.jpg',0)plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axisplt.show()
复制代码


运行上面代码,如下:



注意:

Matplotlib 有很多可供选择的绘图方法。 更多细节请参考 Matplotlib 文档。 一些,我们会在路上看到。

Opencv 加载的彩色图像处于 BGR 模式。 但是 Matplotlib 显示为 RGB 模式。 因此,在 Matplotlib,如果使用 OpenCV 读取图像,彩色图像将无法正确显示。 详情请参阅练习。


发布于: 2021 年 03 月 22 日阅读数: 17
用户头像

Aldeo

关注

果断出击~~~ 2018.05.06 加入

喜欢写博客的码农小青年。工作7年,从事过金融,电商,教育等行业。热爱编程,善于合作,喜欢学习,迎难而上,结交朋友。人生格言:果断出击,不断改变。

评论

发布
暂无评论
Python-计算机视觉-OpenCV-Image