当读取低对比度图像时,它会自动采用以下示例:
In [1]: from PIL import Image
In [2]: import numpy as np
In [3]: import matplotlib.pyplot as plt
In [4]: img = Image.open('images/map.jpg')
In [5]: arr = np.asarray(img)
In [6]: plt.gray()
In [7]: plt.imshow(arr)
Out[7]: <matplotlib.image.AxesImage at 0x7f9c7e88f490>
In [8]: plt.show()
输入
绘图(matplotlib不会自动更改。)
因为此输入与绘图不同,因此修改任何内容。
我需要低对比度图像来实现对比拉伸的算法
阅读书籍amazon数字图像处理(Rafael C. Gonzalez,Richard E. Woods)
PS:matplotlib 转换自动。我不需要。
答案 0 :(得分:8)
如果您不想自动缩放色彩映射表,可以使用vmin
和vmax
来设置您喜欢的范围,如下所示:
plt.imshow(arr, vmin=0, vmax=255)
当显示一个numpy数组时,matplotlib只能自动知道实际输入数据的范围(不是它取自的范围),所以它需要完整的输入范围才能将其映射到完整的输出范围。但是,如果您知道不同范围的输入数据,则可以使用vmin
和vmax
来指定它。