4

读取低对比度图像时,它会自动采用以下示例:

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 自动执行的。)

阴谋 大的

因为这个输入与没有修改任何东西的情节不同。

我需要低对比度的图像来实现对比度拉伸的算法

阅读亚马逊数字图像处理 (Rafael C. Gonzalez, Richard E. Woods)这本书

PS:matplotlib 正在转换自动。我不需要。

4

1 回答 1

12

如果您不想自动缩放颜色图,可以使用vminvmax设置您喜欢的范围,如下所示:

plt.imshow(arr, vmin=0, vmax=255)

当显示一个 numpy 数组时,matplotlib 只能自动知道实际输入数据的范围(而不是从中获取的范围),因此它采用完整的输入范围并将其映射到完整的输出范围。但是如果您知道输入数据的不同范围,您可以使用vminandvmax来指定它。

于 2013-09-16T22:48:01.367 回答