有人能举例说明如何在python中保存单通道索引图像及其颜色图吗? Matlab中的类似操作看起来像this:
[img, cmap] = imread('myImg.png'); % cmap is a [256x3] 'double' array
imwrite(img, cmap, 'outfile.png');
我看到来自imsave
的{{1}}可以选择指定色彩映射(matplotlib.pyplot
),但我无法弄清楚如何提供自己的色彩映射:
cmap
给了我
import matplotlib.pyplot as plt
im = plt.imread('~/myImg.png')
my_cmap = np.array([(128,64,128),
(244,35,232),
(70,70,70),
(102,102,156),],dtype=np.float64)
plt.imsave('~/test.png',im, cmap=my_cmap)
当我尝试TypeError: unhashable type: 'numpy.ndarray'
或dict
...
修改:
遵循' dublicate'回答,输出图像的颜色仍然是错误的:
list
即使我在上面的示例中切换red = my_cmap[:,0] / 255.0
green = my_cmap[:,1] / 255.0
blue = my_cmap[:,2] / 255.0
cdict = { 'red' : red, 'green' : green, 'blue' : blue }
my_cmap = matplotlib.colors.ListedColormap(cdict, name='my_colormap')
plt.imsave('im_test.png',im, cmap=my_cmap)
和green
,我的输出图像看起来也一样,所以格式似乎还有问题......