如何在python中使用cmap在单通道png上进行imread时抑制重新缩放?

时间:2017-12-01 16:09:06

标签: python opencv scipy

我需要在python中加载与colormap一起存储的单通道png文件。它们包含标签索引,因此重新缩放它们对我来说是不合适的。

我刚注意到,由于某些奇怪的原因,scipy.misc.imreadcv2.imread在加载图像时会重新缩放图像。我怎么能压制它?

修改
我只是在另一个没有任何色彩映射的单个通道png上尝试了相同的操作。它没有重新缩放的问题。所以色彩图似乎是问题所在。

这是一个示例图像(它是单个通道,颜色来自色彩图):
Here is an example image

1 个答案:

答案 0 :(得分:1)

不要使用scipy.misc.imread(这只是Pillow的[已弃用]前端),而是直接使用Pillow。当索引Image对象被赋予np.array()时,会创建索引数组。

In [101]: from PIL import Image

In [102]: img = Image.open('WWpd3.png')

In [103]: a = np.array(img)

In [104]: a.shape, a.dtype
Out[104]: ((160, 320), dtype('uint8'))

In [105]: a.min(), a.max()
Out[105]: (0, 19)

In [106]: a[:3, :8]
Out[106]: 
array([[19, 19, 19, 19, 19, 19, 19, 19],
       [19, 10, 10,  5,  5, 10, 10, 10],
       [19, 10, 10,  5,  5, 10, 10, 10]], dtype=uint8)