OpenCV_Python开发(读取、显示、保存图片)
作者:Irain
QQ:2573396010
微信:18802080892
GitHub链接:https://github.com/Irain-LUO/OpenCV-Python
1 目标
- 您将学习如何读取图像,如何显示图像以及如何将其保存回去。
- 您将学习以下功能:cv.imread(),cv.imshow(),cv.imwrite()
- (可选)了解如何使用Matplotlib显示图像
2 使用OpenCV
2.1 读取图像
使用函数cv.imread()读取图像。该映像应位于工作目录中,或者应提供完整的映像路径。第二个参数是一个标志,用于指定应读取图像的方式。
- cv.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。
- cv.IMREAD_GRAYSCALE:以灰度模式加载图像
- cv.IMREAD_UNCHANGED:以包括alpha通道的形式加载图像。
注意
-
除了这三个标志,您还可以分别简单地传递整数1、0或-1。
import cv2 as cv #opencv读取的格式是BGR
import numpy as np
img1=cv.imread('cat.jpg') # 默认彩色图像
img2=cv.imread('cat.jpg',0) # 加载彩色灰度图像
警告
- 即使图像路径错误,也不会引发任何错误,但是‘print img’会为您提供结果为None。
2.2 显示图像
使用函数cv.imshow()在窗口中显示图像。窗口自动适合图像尺寸。
-
第一个参数是窗口名称,它是一个字符串。
-
第二个论点是我们的形象。您可以根据需要创建任意多个窗口,但可以使用不同的窗口名称。
cv.imshow('image',img1)
cv.waitKey(0) # 等待时间,毫秒级,0表示任意键终止
cv.destroyAllWindows()
展示彩色图像
cv.imshow('image',img2)
cv.waitKey(0) # 等待时间,毫秒级,0表示任意键终止
cv.destroyAllWindows()
展示灰度图像
cv.waitKey()是键盘绑定功能。它的参数是以毫秒为单位的时间。该函数将为任何键盘事件等待指定的毫秒数。如果在此期间按任意键,程序将继续。如果传递了0,它将无限期地等待击键。它也可以设置为检测特定的按键,例如是否按下了按键a,我们将在下面讨论。
注意
-
除了绑定键盘事件外,此功能还处理许多其他GUI事件,因此必须使用它来实际显示图像。
cv.destroyAllWindows()只会破坏我们创建的所有窗口。如果要销毁任何特定的窗口,请使用函数cv.destroyWindow()在其中传递确切的窗口名称作为参数。
注意
-
在特殊情况下,您可以创建一个空窗口并在以后将图像加载到该窗口。在这种情况下,您可以指定窗口是否可调整大小。这是通过函数cv.namedWindow()完成的。默认情况下,该标志为cv.WINDOW_AUTOSIZE。但是,如果将标志指定为cv.WINDOW_NORMAL,则可以调整窗口大小。当图像尺寸过大以及向窗口添加跟踪栏时,这将很有帮助。
# https://docs.opencv.org/4.2.0/d7/dfc/group__highgui.html#ga5afdf8410934fd099df85c75b2e0888b
cv2.namedWindow('image',cv2.WINDOW_NORMAL) # 创建窗口,名称为image
cv2.imshow('image',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.3 保存图像
使用函数 cv.imwrite() 保存图像。
-
第一个参数是文件名。
-
第二个参数是要保存的图像。
# https://docs.opencv.org/4.2.0/d4/da8/group__imgcodecs.html#gabbc7ef1aa2edfaa87772f1202d67e0ce
cv2.imwrite('mycat1.png',img) # 以png格式存储
2.4 小试牛刀
下面的程序加载灰度图像,显示它,保存图像,如果你按’s’和退出,或简单地退出不保存,如果你按ESC键。
import numpy as np
import cv2 as cv
img = cv.imread('dog.jpg',0)
cv.imshow('image',img)
k = cv.waitKey(0)
if k == 27: # 等待 ESC 键退出
cv.destroyAllWindows()
elif k == ord('s'): # 等待"s"键保存和退出
cv.imwrite('messigray.png',img)
cv.destroyAllWindows()
警告
- 如果您使用的是 64 位计算机,则必须修改 k = cv.waitkey(0) 行,如下所示: k = cv.waitkey(0) = 0xFF。
2.5 使用Matplotlib
- Matplotlib 是 Python 的绘图库,为您提供了各种绘图方法。你会看到他们未来的文章。在这里,您将学习如何使用 Matplotlib 显示图像。您可以使用 Matplotlib 缩放图像、保存图像等。
- Matplotlib使用手册链接
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('dog.jpg',0)
# https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # 在 X 轴和 Y 轴上隐藏刻度值
plt.show()
警告
- OpenCV 加载的颜色图像处于 BGR 模式。但 Matplotlib 以 RGB 模式显示。因此,如果使用 OpenCV 读取图像,则彩色图像不会正确显示在 Matplotlib 中。
日期:2020年7月1日
本文地址:https://blog.csdn.net/weixin_42122125/article/details/107045012
推荐阅读
-
iOS中读取照片库及保存图片或视频到照片库的要点解析
-
Android实现从网络获取图片显示并保存到SD卡的方法
-
Android开发实现读取excel数据并保存为xml的方法
-
iOS中读取照片库及保存图片或视频到照片库的要点解析
-
python读取目录下所有的jpg文件,并显示第一张图片的示例
-
WinForm开发picturebox图像重绘(picturebox显示图片)代码分享
-
Android开发ImageView图片无法显示解决过程
-
android读取Assets图片资源保存到SD卡实例
-
Android开发实现读取excel数据并保存为xml的方法
-
Android实现保存图片到本地并在相册中显示