python imshow 灰度静态颜色值

0 投票
1 回答
5708 浏览
提问于 2025-04-17 12:13

我明白使用matplotlib.pyplot里的imshow可以让我很方便地把矩阵可视化成图像。我的问题是,当我想要可视化一个矩阵时,这个函数会根据我传入的值来调整颜色的浓淡。

比如说:

#define a numpy matrix with values between 0 and 1
k=numpy.array([
         [ 1.        ,  0.9701425 ,  0.99931483],
         [ 0.9701425 ,  1.        ,  0.97845444],
         [ 0.99931483,  0.97845444,  1.        ]])
#plot the matrix
plt.imshow(k,cmap=cm.gist_gray)

我得到的图像中,1和0.97之间的差别非常大。如果我做一些这样的操作:

k[2][2]=.1
plt.imshow(k,cmap=cm.gist_gray)

我得到的图像就完全不同了。有没有什么办法解决这个问题?有没有办法让图像中的颜色值是固定的,而不是像上面那样动态变化的?

1 个回答

2

你可以使用 imshow 函数中的 vminvmax 参数,具体的用法可以在 这里 找到。特别是,如果你把 imshow 的调用修改为

plt.imshow(k, vmin=0, vmax=1)

那么颜色会被调整到一个正常的范围,就好像数据中有一个值是 0,另一个值是 1

撰写回答