OpenCV 中图像读取显示及保存
优质
小牛编辑
133浏览
2023-12-01
这里我们使用工具为Python2.7
,使用库numpy
,opencv
,从图片的导入到显示及保存,同时将图片变为灰度图
1、读入图像
cv2.imread(文件名,标记)
第一个参数图像应该在工作目录中,或者应该给出完整的图像路径。
第二个参数是一个标志,指定应读取图像的方式。
- cv2.IMREAD_COLOR:加载彩色图像。任何形象的透明度将被忽略。这是默认的标志。
- cv2.IMREAD_GRAYSCALE:以灰度模式加载图像
- cv2.IMREAD_UNCHANGED:加载包含Alpha通道的图像
除了上面这三个标志,你可以简单地传递整数1,0或-1。
#!/usr/bin/python
# -*- coding:utf8 -*-
import cv2
import numpy as np
# 普通模式加载,加载彩色图像
img = cv2.imread('messi5.jpg',cv2.IMREAD_COLOR)
# 简化模式加载,以灰度模式加载图像
img = cv2.imread('messi5.jpg',0)
2、显示图像
cv2.imshow()
使用函数cv2.imshow()
在窗口中显示图像。该窗口自动适合图像大小。 第一个参数是一个字符串表示窗口名称。第二个参数是我们的image
。您可以根据需要创建多个窗口,但需要使用不同的窗口名称。
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
- cv2.waitKey()等待键盘输入,为毫秒级
- cv2.destroyAllWindows()可以轻易删除任何我们建立的所有窗口,如果要销毁任何特定的窗口,请使用函数
cv2.destroyWindow()
,在其中传入确切的窗口名称作为参数。
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3、保存图像
使用函数cv2.imwrite()
保存图像。
第一个参数是文件名,第二个参数是要保存的图像。
cv2.imwrite('messigray.png',img)
上面的代码会将图像以PNG格式保存在工作目录中。
4、总结一下
下面程序加载灰度图像,显示图像,按's'保存图像并退出,或按ESC键退出而不保存。
import numpy as np
import cv2
img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:
# 按ESC退出
cv2.destroyAllWindows()
elif k == ord('s'):
# 按s保存且退出
cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()
5、使用Matplotlib
Matplotlib
是Python
的绘图库,可以为您提供各种绘图方法。你会看到他们在接下来的文章。在这里,您将学习如何使用Matplotlib
显示图像。你可以放大图像,使用Matplotlib
保存等。
import numpy as np
import cv2
from 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 axis
plt.show()
窗口显示如下图所示:
Matplotlib
提供了大量绘图选项。有关更多详细信息,请参阅Matplotlib文档。有些,我们会看到的。
警告 OpenCV加载的彩色图像处于BGR模式。但Matplotlib以RGB模式显示。因此,如果使用OpenCV读取图像,则彩色图像将无法在Matplotlib中正确显示。请参阅练习了解更多详情。
其他资源
联系
当您尝试在OpenCV
中加载彩色图像并将其显示在Matplotlib
中时,存在一些问题。阅读这个讨论并理解它。