You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib中反转RGB格式MNIST图像的颜色(白黑转黑白)

解决MNIST RGB图像颜色反转问题

问题原因

Matplotlib的cmap参数仅对单通道2D数组(灰度图)生效,当传入3D的RGB数组时,会直接按RGB通道的原始像素值渲染,完全忽略cmap设置,所以用gray_r反转无效。

两种解决方法

方法1:将RGB图转为单通道灰度图后反转

因为MNIST的RGB图像三个通道的像素值完全一致(本质是灰度图转成了RGB格式),所以可以直接取任意一个通道,或用标准灰度转换公式生成单通道图,再用gray_r反转:

import numpy as np
import matplotlib.pyplot as plt

# 假设image_2是(28,28,3)的RGB数组
# 方式A:直接取单个通道(MNIST专属快捷方式)
gray_img = image_2[:, :, 0]
plt.imshow(gray_img, cmap='gray_r')
plt.show()

# 方式B:标准灰度转换(适用于所有RGB图)
gray_img = np.dot(image_2[..., :3], [0.2989, 0.5870, 0.1140])
plt.imshow(gray_img, cmap='gray_r')
plt.show()

方法2:直接反转RGB像素值

如果不想转灰度,直接对RGB图像的每个像素值做减法反转即可:

import matplotlib.pyplot as plt

# 情况1:图像像素值是0-255的uint8类型
inverted_img = 255 - image_2
plt.imshow(inverted_img)
plt.show()

# 情况2:图像像素值是0-1的float类型
inverted_img = 1.0 - image_2
plt.imshow(inverted_img)
plt.show()

内容的提问来源于stack exchange,提问作者stackbiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 00:15:58