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日

### OpenCV 初学者教程 #### 安装 OpenCV 库 对于刚开始接触计算机视觉领域的新手来说,安装合适的库是第一步。为了使用 OpenCV 进行图像处理和视频捕捉等功能,在 Python 中可以通过 pip 工具轻松完成安装。 ```bash pip install opencv-python ``` 这将会安装最新版本的 OpenCV-Python 绑定[^1]。 #### 基本操作:读取显示保存图片 学习如何加载一张图片并将其展示出来是非常重要的基础技能之一。下面给出了一段简单的代码来实现这一功能: ```python import cv2 # 加载彩色图像 img = cv2.imread('path_to_image', 1) # 创建窗口用于显示图像 cv2.imshow('image', img) # 等待按键事件 cv2.waitKey(0) # 销毁所有创建好的窗口 cv2.destroyAllWindows() # 将图像保存到指定路径下 cv2.imwrite('output.jpg', img) ``` 这段程序展示了怎样通过 `imread()` 函数读入一幅图,并利用 `imshow()` 方法在一个新打开的小窗内呈现它;最后再用 `waitKey()`, `destroyAllWindows()` 和 `imwrite()` 来控制界面交互以及存储修改后的结果。 #### 图像转换为灰度模式 许多情况下我们需要把原始色彩丰富的照片简化成黑白两色的形式来进行更高效的分析工作。可以借助如下几行简洁明了的语句达成目的: ```python gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ``` 此命令会将输入参数中的 BGR 颜色空间下的矩阵对象转为单通道灰阶表示法的数据结构形式。 #### 边缘检测技术应用实例 Canny Edge Detection 是一种广泛应用于边缘提取的经典算法。以下是具体的应用方式: ```python edges = cv2.Canny(gray_img, threshold1=100, threshold2=200) ``` 上述函数接收两个阈值作为参数,分别对应于低灵敏度边界点(`threshold1`)和高灵敏度边界点(`threshold2`),以此决定哪些像素应该被标记为真正的轮廓线部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值