python imshow 灰度静态颜色值
我明白使用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
函数中的 vmin
和 vmax
参数,具体的用法可以在 这里 找到。特别是,如果你把 imshow
的调用修改为
plt.imshow(k, vmin=0, vmax=1)
那么颜色会被调整到一个正常的范围,就好像数据中有一个值是 0
,另一个值是 1
。