目录
2.用cv2.imwrite()函数将图像数据保存到指定路径
5.重点区别cv2.imshow(),plt.imshow()和plt.shoow()
1.用cv2.imread()函数读取图像,若需要改换灰度图像,用函数cv2.IMREAD_GRAYSCALE,如img=cv2.imread("sea.jpeg",cv2.IMREAD_GRAYSCALE)
2.用cv2.imwrite()函数将图像数据保存到指定路径,如print(cv2.imwrite("C:\\Users\\DELL\\.conda\\envs\\oprncv\\venv\\sea.jpeg", img))
第一个参数是要保存的文件路径和文件名,第二个参数是要保存的图像数据,用print()来输出布尔值,反映保存成功与否。
3.打印图像(没有函数调用):
用cv2.imshow()函数去绘制画布,两个参数与cv2.imwrite()一样。
用cv2.waitKey()设置图像呈现的时间,一般为0
用cv2.destroyAllWindows()来关闭所有由 OpenCV 创建的窗口的函数。
4.打印图像(函数调用)
创建函数 def cv__show(name,img)【回看图像读取与部分处理.py文件的12--28行】
创建简单函数并调用函数
def cv__show(name, img):
cv2.imshow(name, img)
cv2.waitKey(0)
cv__show("C:\\Users\\DELL\\.conda\\envs\\oprncv\\venv\\sea.jpeg",img)
复杂函数调用的方法:
def learn_to_code():
print("You can learn to code for free on freeCodeCamp")
def learn_what_language():
print("You can learn any programming language on the freeCodeCamp YouTube channel")
learn_what_language()
learn_to_code()
5.重点区别cv2.imshow(),plt.imshow()和plt.shoow()
(1)cv2.imshow()和plt.imshow()的区别:
颜色通道顺序不同:
cv2.imshow():
OpenCV 读取图像时默认使用BGR(蓝 - 绿 - 红)通道顺序,与图像的原始存储格式一致。因此cv2.imshow()直接显示 BGR 格式图像,颜色表现正常。
plt.imshow():
Matplotlib 默认期望图像为RGB(红 - 绿 - 蓝)通道顺序。如果直接显示 OpenCV 读取的 BGR 图像,会出现颜色偏差(如蓝色和红色互换)。
解决方法:需要先用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)转换通道顺序。
窗口控制方式不同:
cv2.imshow():
显示图像后,必须配合cv2.waitKey()使用(否则窗口会一闪而逝),例如cv2.waitKey(0)表示等待用户按键后关闭。
关闭窗口需调用cv2.destroyAllWindows(),否则窗口可能残留。
支持通过窗口名称单独控制(如cv2.imshow("window1", img))。
plt.imshow():
显示图像需配合plt.show(),无需额外等待函数。
窗口由 Matplotlib 自身管理,关闭窗口后自动释放资源。
支持在同一张图上叠加绘制(如添加坐标轴、文字等)。
适用场景不同:
cv2.imshow():
适合 OpenCV 图像处理流程中的快速预览,尤其在实时视频处理(如摄像头采集)中表现更高效。
plt.imshow():
适合需要精细化展示(如添加标注、对比多幅图像、调整坐标轴)的场景,常用于数据分析和可视化报告。
代码示例:
import cv2
import matplotlib.pyplot as plt
# 读取图像(OpenCV默认BGR格式)
img = cv2.imread("image.jpg")
# 使用cv2显示(正常颜色)
cv2.imshow("OpenCV Window", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 使用matplotlib显示(需转换为RGB)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.axis('off') # 隐藏坐标轴
plt.show()
(2)plt.imshow()和plt.how()的区别:
在 Matpotlib 中,plt.imshow() 和 plt.show() 是两个与图像显示相关的核心函数,但它们的功能和用途截然不同:
1. plt.imshow():绘制图像到画布
作用:将图像数据(通常是二维或三维数组)加载并绘制到当前的 Matplotlib 画布(figure)上,但不会直接显示图像窗口。
参数:主要接收图像数据(如 NumPy 数组),还可通过 cmap 等参数指定颜色映射(如灰度图 cmap='gray')。
适用场景:用于 “绘制” 图像内容,是显示图像的 “准备工作”。
示例:
import matplotlib.pyplot as plt
import numpy as np
# 创建一个随机的2D数组(模拟图像)
img = np.random.rand(100, 100) # 100x100的随机数组
plt.imshow(img, cmap='gray') # 将数组绘制为灰度图(仅绘制,不显示窗口)
2. plt.show():显示画布上的内容
作用:触发图像窗口的显示,将之前所有通过 plt.imshow()、plt.plot() 等函数绘制在画布上的内容实际展示出来。
特点: 通常放在代码的最后调用,一次性显示所有已绘制的内容。 在脚本中,plt.show() 会阻塞程序运行,直到关闭图像窗口。 在 Jupyter notebook 中,若设置了 %matplotlib inline,可能不需要显式调用也能显示,但建议保留以确保兼容性。
示例(接上面的代码):
import matplotlib.pyplot as plt
import numpy as np
# 创建一个随机的2D数组(模拟图像)
img = np.random.rand(100, 100) # 100x100的随机数组
plt.imshow(img, cmap='gray') # 绘制图像
plt.title("Random Image") # 可以添加标题等装饰
plt.show() # 显示图像窗口(此时才会看到图像)