数字图像处理--图像的读取、显示和保存
这意味着,如果你用 OpenCV 读取了一张彩色图片,然后直接用 matplotlib 来显示,图片的颜色就会出现偏差。执行这行代码后,你会看到一个名为 "22" 的窗口弹出,显示你指定的图片。这是因为 OpenCV 读取的 BGR 图片被 matplotlib 当成了 RGB 图片来处理,导致蓝色和红色通道的位置互换了。相比 OpenCV,matplotlib 在展示图片时更加灵活,尤其是在需要
一、两种强大的工具:OpenCV 和 matplotlib
在 PyCharm 中打开图片,我们主要有两种工具可以选择,它们分别是 OpenCV 和 matplotlib。
(一)用 OpenCV 打开图片
OpenCV 是一个开源的计算机视觉库,它的功能非常强大。用 OpenCV 打开图片,首先得确保图片文件和你的 Python 脚本在同一个文件夹里。这样,OpenCV 才能准确地找到并读取图片。
![]()
cv2.imread()是 OpenCV 中用于读取图片的函数。它需要一个参数,即图片的文件路径。在这里,我们使用了 r"D:\22.bmp",这表示图片位于 D 盘根目录下,文件名为 22.bmp。使用 r前缀可以避免路径中的反斜杠被误解为转义字符。cv2.imshow() 函数用于在窗口中显示图片。它的第一个参数是窗口的名称,这里我们将其设置为 '22';第二个参数是要显示的图片变量 img。执行这行代码后,你会看到一个名为 "22" 的窗口弹出,显示你指定的图片。 cv2.waitKey() 函数的作用是让程序等待用户的按键事件。参数 0 表示程序会无限期地等待,直到你按下任意键。如果你希望窗口在一定时间后自动关闭,可以将参数设置为相应的毫秒数。
(二)用 matplotlib 打开图片
matplotlib 是一个用于绘制图表和图像的库。相比 OpenCV,matplotlib 在展示图片时更加灵活,尤其是在需要对图片进行标注或者同时展示多张图片时。

如果你想要在同一个画布上展示多张图片,plt.subplot() 函数就派上用场了。这个函数的三个参数分别代表画布的行数、列数和当前图片的位置。


二、颜色通道的差异
虽然 OpenCV 和 matplotlib 都能打开图片,但它们在处理彩色图片时有一个重要的区别。OpenCV 使用的是 BGR 颜色通道顺序,而 matplotlib 使用的是 RGB 颜色通道顺序。这意味着,如果你用 OpenCV 读取了一张彩色图片,然后直接用 matplotlib 来显示,图片的颜色就会出现偏差。
举个例子,原本黄色的鸭子可能会变成蓝色的。这是因为 OpenCV 读取的 BGR 图片被 matplotlib 当成了 RGB 图片来处理,导致蓝色和红色通道的位置互换了。
那么,如何解决这个问题呢?答案是进行颜色通道的转换。OpenCV 提供了一个方便的函数 cv2.cvtColor(),可以轻松地将 BGR 图片转换为 RGB 图片。

在这个例子中,cv2.COLOR_BGR2RGB 参数指定了颜色通道的转换方向。经过转换后,图片的颜色就能正确显示了。
三、视频读取与显示

cv2.VideoCapture(r"E:\111.MP4"),用于读取指定路径的视频文件。capture.read(),返回一个布尔值 ref(表示读取是否成功)和一帧图像 frame。cv2.imshow("captureSrc", frame),在窗口中显示当前帧。cv2.waitKey(1) == 27,等待 1 毫秒,若按下 "Esc" 键(ASCII 码 27),则退出循环。capture.release() 和 cv2.destroyAllWindows(),确保资源被正确释放,窗口被关闭。cv2.imwrite('img.jpg', frame),将最后一帧保存为图片文件。
以上就是第一节上机课的内容。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)