1 读取、显示、保存图片-OpenCV_Python小白

作者:Irain
QQ:2573396010
微信:18802080892
GitHub链接:https://github.com/Irain-LUO/OpenCV-Python

1 目标

  1. 您将学习如何读取图像,如何显示图像以及如何将其保存回去。
  2. 您将学习以下功能:cv.imread(),cv.imshow(),cv.imwrite()
  3. (可选)了解如何使用Matplotlib显示图像

2 使用OpenCV

2.1 读取图像

使用函数cv.imread()读取图像。该映像应位于工作目录中,或者应提供完整的映像路径。第二个参数是一个标志,用于指定应读取图像的方式。

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

注意

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()在窗口中显示图像。窗口自动适合图像尺寸。

  • 第一个参数是窗口名称,它是一个字符串。

  • 第二个论点是我们的形象。您可以根据需要创建任意多个窗口,但可以使用不同的窗口名称。

  • 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,我们将在下面讨论。
注意

cv.destroyAllWindows()只会破坏我们创建的所有窗口。如果要销毁任何特定的窗口,请使用函数cv.destroyWindow()在其中传递确切的窗口名称作为参数。

注意

  • 在特殊情况下,您可以创建一个空窗口并在以后将图像加载到该窗口。在这种情况下,您可以指定窗口是否可调整大小。这是通过函数cv.namedWindow()完成的。默认情况下,该标志为cv.WINDOW_AUTOSIZE。但是,如果将标志指定为cv.WINDOW_NORMAL,则可以调整窗口大小。当图像尺寸过大以及向窗口添加跟踪栏时,这将很有帮助。

  • namedWindow方法使用手册链接

# 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日

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值