当前位置: 代码网 > it编程>前端脚本>Python > Matplotlab显示OpenCV读取到的图像

Matplotlab显示OpenCV读取到的图像

2025年02月13日 Python 我要评论
一. 确认图像的数组类型在使用 opencv 的cv2.imread()函数读取图像时,第二个参数(标志)决定了图像的读取方式。具体来说,0、1和-1分别对应不同的读取模式:读取模式标志值灰度cv2.

一. 确认图像的数组类型

在使用 opencv 的 cv2.imread() 函数读取图像时,第二个参数(标志)决定了图像的读取方式。具体来说,01 和 -1 分别对应不同的读取模式:

读取模式标志
灰度cv2.imread_grayscale0
彩色(忽略透明度通道)cv2.imread_color1
彩色(包括 alpha 透明度通道,如果存在)cv2.imread_unchanged-1

这里不讨论处理包含透明度通道的图像

使用 img.shape 判断图像类型

在 opencv 中,当你使用 cv2.imread() 函数读取一张图像时,它会将图像加载到内存中,并将其存储为一个 numpy 数组。img.shape 是 numpy 数组的一个属性,它返回一个包含数组各维度大小的元组。通过检查这个元组的长度(即维度的数量),我们可以确定数组的类型或结构。

  • 灰度图像:通常是一个二维数组,表示为 (height, width), img.shape 返回的元组长度为 2。
  • 彩色图像:通常是一个三维数组,表示为 (height, width, channels), channels 表示颜色通道的数量(例如 rgb 图像有三个通道,形状通常是 (height, width, 3)), img.shape 返回的元组长度为 3。
# img 是一个 numpy 数组
if len(img.shape) == 2:
    print("这是一个灰度图像")
elif len(img.shape) == 3:
    print("这是一个彩色图像")

二. 使用matplotlab显示

灰度图像

plt.imshow(img, cmap='gray')

理解cmap='gray'

直接imshow 会使用默认的颜色映射(通常是 viridis),这通常不是期望的灰度效果。需要明确指定颜色映射 (cmap) 为 'gray',这样可以确保图像中的每个像素值都被正确地映射到灰度级别。

彩色图像

opencv读取到的色彩通道顺序为bgr, matplotlab读取显示的色彩通道为rgb,所以需要读取时转换通道

plt.imshow(img[:, :, ::-1])

理解 img[:, :, ::-1]

第一维和第二维分别代表图像的高度和宽度,第三维有三个通道:红(r)、绿(g)、蓝(b)

  • : 表示选取所有元素。
  • ::-1 是python中的切片语法,表示从尾到头(逆序)选择元素。这里的意图通常是翻转最后一个维度的数据,比如将rgb格式转换为bgr格式,或者相反。

到此这篇关于matplotlab显示opencv读取到的图像的文章就介绍到这了,更多相关matplotlab opencv图像内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com