Matplotlab显示OpenCV读取到的图像

Matplotlab显示OpenCV读取到的图像

一. 确认图像的数组类型

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

读取模式 标志
灰度 cv2.IMREAD_GRAYSCALE 0
彩色(忽略透明度通道) cv2.IMREAD_COLOR 1
彩色(包括 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。
python 复制代码
# img 是一个 NumPy 数组
if len(img.shape) == 2:
    print("这是一个灰度图像")
elif len(img.shape) == 3:
    print("这是一个彩色图像")

二. 使用Matplotlab显示

灰度图像

python 复制代码
plt.imshow(img, cmap='gray')

理解cmap='gray'

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

彩色图像

OpenCV读取到的色彩通道顺序为BGR, Matplotlab读取显示的色彩通道为RGB,所以需要读取时转换通道

python 复制代码
plt.imshow(img[:, :, ::-1])

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

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

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

Copyright © 2025 Log All rights reserved.

相关推荐
蹦蹦跳跳真可爱5892 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij2 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien2 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
敲键盘的小夜猫3 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
高压锅_12203 小时前
Django Channels WebSocket实时通信实战:从聊天功能到消息推送
python·websocket·django
胖达不服输5 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
吴佳浩5 小时前
Python入门指南-番外-LLM-Fingerprint(大语言模型指纹):从技术视角看AI开源生态的边界与挑战
python·llm·mcp
吴佳浩5 小时前
Python入门指南-AI模型相似性检测方法:技术原理与实现
人工智能·python·llm
叶 落5 小时前
计算阶梯电费
python·python 基础·python 入门
Python大数据分析@6 小时前
Origin、MATLAB、Python 用于科研作图,哪个最好?
开发语言·python·matlab