OpenCV-Python (官方)中文教程(部分一)_Day2
OpenCV 中的 Gui 特性
1.3保存图像
使用函数 cv2.imwrite() 来保存一个图像。首先需要一个文件名,之后才是你要保存的图像。
cv2.imwrite('messigray.png',img)
总结:
下面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者 按下 ESC 键退出不保存。
import 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()
警告:如果是Windows64 位系统,需将 k = cv2.waitKey(0) 这行改成k = cv2.waitKey(0)&0xFF
1.4使用 Matplotlib
Matplotib 是 python 的一个绘图库,里头有各种各样的绘图方法。之后 会陆续了解到。现在,你可以学习怎样用 Matplotib 显示图像。你可以放大,保存图像等等。
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.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()
窗口截屏如下:

参见:Matplotib 有多种绘图选择。具体可以参见 Matplotib docs。我们也会陆续了解一些
注意:彩色图像使用 OpenCV 加载时是 BGR 模式。但是 Matplotib 是 RGB 模式。所以彩色图像如果已经被 OpenCV 读取,那它将不会被 Matplotib 正 确显示。具体细节请看练习
更多资源:Matplotlib Plotting Styles and Features
当你用 OpenCV 加载一个彩色图像,并用 Matplotib 显示它时会遇 到一些困难。请阅读this discussion并且尝试理解它。
-
灰度图像:由于图像是以灰度模式读取的,
img是一个二维数组。如果是彩色图像,img将是一个三维数组(包含 RGB 三个通道)。 -
Matplotlib 显示:
Matplotlib默认使用 RGB 格式显示图像,而OpenCV使用 BGR 格式。如果读取的是彩色图像,需要先转换颜色空间:img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
出现:Import "matplotlib"could not be resolved from source
解决:
在虚拟环境中直接升级
pip
激活虚拟环境:
打开终端(命令行)。
运行以下命令激活虚拟环境:
f:\opencv-python\myenv1\Scripts\activate激活后,命令提示符前会显示虚拟环境名称(如
(myenv1))。升级
pip:
运行以下命令升级
pip:python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple确保升级的是虚拟环境中的
pip:
在升级前,务必确认虚拟环境已激活,或者使用虚拟环境中的 Python 解释器。
你可以通过以下命令检查当前
pip的位置:pip --version确认路径是否包含
myenv1。升级后验证:
升级完成后,运行
pip --version确认版本是否更新。安装matplotlib pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/
这段代码用于读取一张灰度图像并显示它,使用了 OpenCV 和 Matplotlib 库。以下是每一句代码的详细解释:
1. import numpy as np
-
作用:导入
NumPy库,并将其命名为np。 -
说明:
NumPy是 Python 中用于科学计算的核心库,常用于处理数组和矩阵运算。虽然这段代码中没有直接使用NumPy,但OpenCV和Matplotlib通常依赖于它。
2. import cv2 as cv
-
作用:导入
OpenCV库,并将其命名为cv。 -
说明:
OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理功能。这里使用它来读取图像。
3. from matplotlib import pyplot as plt
-
作用:从
Matplotlib库中导入pyplot模块,并将其命名为plt。 -
说明:
Matplotlib是 Python 中用于绘制图表和图像的库,pyplot是其常用的绘图模块。
4. img = cv.imread('messi5.jpg', 0)
-
作用:使用
OpenCV读取图像文件'messi5.jpg',并将其转换为灰度图像。 -
参数:
-
'messi5.jpg':图像文件的路径。 -
0:表示以灰度模式读取图像(如果是1,则表示以彩色模式读取)。
-
-
返回值:
img是一个二维数组(灰度图像)或三维数组(彩色图像),表示图像的像素值。
5. plt.imshow(img, cmap='gray', interpolation='bicubic')
-
作用:使用
Matplotlib显示图像。 -
参数:
-
img:要显示的图像数据(这里是灰度图像)。 -
cmap='gray':指定颜色映射为灰度(如果是彩色图像,可以省略此参数)。 -
interpolation='bicubic':指定图像插值方法为双三次插值,使图像显示更平滑。
-
-
说明:
plt.imshow()用于显示图像,但此时图像还不会显示出来,需要调用plt.show()。
6. plt.xticks([]), plt.yticks([])
-
作用:隐藏 X 轴和 Y 轴的刻度值。
-
说明:
-
plt.xticks([]):隐藏 X 轴的刻度。 -
plt.yticks([]):隐藏 Y 轴的刻度。
-
-
目的:使图像显示更简洁,避免刻度值干扰视觉效果。
-
如果你不希望隐藏 X 轴和 Y 轴的刻度值,可以直接删除或注释掉这一行
-

7. plt.show()
-
作用:显示图像。
-
说明:
plt.show()是Matplotlib中用于显示所有已绘制内容的函数。在此之前的所有绘图操作(如plt.imshow())都不会直接显示图像,直到调用plt.show()。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐


所有评论(0)