首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将numpy数组保存为具有自定义颜色的单通道png

将numpy数组保存为具有自定义颜色的单通道png
EN

Stack Overflow用户
提问于 2020-11-04 22:26:36
回答 1查看 363关注 0票数 1

我有一个整数数组,用很少的值(大约2-5)来表示图像。我想将它保存到png文件中,为每个值自定义颜色。我是这样尝试的:

代码语言:javascript
复制
import numpy as np
from PIL import Image

array = np.zeros([100, 200, 4], dtype=np.uint8)
array[:,:100] = [255, 128, 0, 255] #Orange left side
array[:,100:] = [0, 0, 255, 255]   #Blue right side

img = Image.fromarray(array)
img.save(r'D:\test.png')

结果是ok,但它有4个通道。我需要的结果是自定义颜色的单通道。

我是这样尝试的:

代码语言:javascript
复制
array = np.zeros([100, 200], dtype=np.uint8)
array[:,:100] = 1 
array[:,100:] = 0   

结果是单通道,但它当然是灰色销售。我不知道如何将颜色赋值为1和0,并将其保存为单通道。尝试使用matplotlib色彩映射表,但没有成功。

如有任何帮助,将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-04 23:20:58

您可以像这样制作调色板图像:

代码语言:javascript
复制
#!/usr/bin/env python3

from PIL import Image
import numpy as np

# Make image with small random numbers
im = np.random.randint(0,5, (4,8), dtype=np.uint8)

# Make a palette
palette = [255,0,0,    # 0=red
           0,255,0,    # 1=green
           0,0,255,    # 2=blue
           255,255,0,  # 3=yellow
           0,255,255]  # 4=cyan
# Pad with zeroes to 768 values, i.e. 256 RGB colours
palette = palette + [0]*(768-len(palette))

# Convert Numpy array to palette image
pi = Image.fromarray(im,'P')

# Put the palette in
pi.putpalette(palette)

# Display and save
pi.show()
pi.save('result.png')

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64681931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档