如何将Matplotlib中jet色图渲染的矩阵转换为RGB矩阵?
获取Matplotlib Jet色图对应的RGB矩阵
要得到和plt.imshow(arr, cmap="jet")完全一致的RGB矩阵,你可以直接利用Matplotlib的色图对象完成数值到RGB的映射,步骤如下:
- 获取Jet色图实例,对齐
imshow的默认归一化逻辑(将数组最小/最大值映射到色图两端) - 将原数组传入色图对象得到RGBA结果,剔除Alpha通道后得到RGB矩阵
- 按需转换为0-255的整数格式(符合图像存储的常见标准)
完整代码示例:
import numpy as np import matplotlib.cm as cm # 原输入数组 arr = np.array([[4,5,12,3], [2,4,5,4], [1,3,5,7], [3,9,10,12], [17,1,9,22]]) # 获取jet色图对象 jet_cmap = cm.get_cmap('jet') # 归一化数组到[0,1]范围(和imshow默认行为一致) norm_arr = (arr - arr.min()) / (arr.max() - arr.min()) # 映射为RGBA格式,取前3个通道得到RGB(值为0-1的浮点数) rgb_float = jet_cmap(norm_arr)[:, :, :3] # 可选:转换为0-255的8位整数格式 rgb_int = (rgb_float * 255).astype(np.uint8) print("RGB浮点数矩阵形状:", rgb_float.shape) # 输出 (5,4,3) print("RGB整数矩阵形状:", rgb_int.shape) # 输出 (5,4,3)
关键说明
cm.get_cmap('jet')确保使用和imshow完全一致的色图- 手动归一化是为了对齐
imshow默认的vmin=arr.min(), vmax=arr.max()逻辑 - 若不需要整数格式,直接使用
rgb_float即可,其RGB值与Matplotlib渲染的图像完全对应
内容的提问来源于stack exchange,提问作者Ludovic Gardy
相关产品推荐
相关产品推荐

