gpt4 book ai didi

python - Matplotlib 仅保存特定颜色的图像

转载 作者:行者123 更新时间:2023-12-01 06:45:38 24 4
gpt4 key购买 nike

我正在使用以下示例代码来创建图像蒙版。 mask 需要具有 6 种颜色之一 - 5 种给定颜色和白色背景。然而,当我查看使用下面的代码保存的图像的独特颜色时,会生成 25 种颜色。使用 matplotlib 有没有办法限制保存时生成的颜色?

def rect(x,y,w,h,c):
ax = plt.gca()
polygon = plt.Rectangle((x,y),w,h,color=c)
ax.add_patch(polygon)

X = np.arange(0,10,0.1)
F = np.zeros(int(len(X)/5))
for f in range(1,5):
Fn=np.full(int(len(X)/5), f, dtype=int)
F = np.append(F, Fn, axis=0)

Y = np.sin(X)
plt.plot(X,Y, alpha=0.0)
plt.xlim([0, 10])
dx = X[1]-X[0]

ccc = ['#996633','blue','yellow','red','green']
cmap = colors.ListedColormap(ccc[0:len(ccc)], 'indexed')
for n, (x,y, f) in enumerate(zip(X,Y,F)):
color = cmap(int(f))
rect(x,0,dx,y,color)
plt.axis('off')
plt.savefig(f'5_colours_only.png', transparent = False, bbox_inches = 'tight', pad_inches = 0)

enter image description here

测试图像颜色的代码:

def get_unique_colours(img_name):
im = pil_image.open(img_name)
by_color = defaultdict(int)
for pixel in im.getdata():
by_color[pixel] += 1
return by_color

最佳答案

看起来额外的颜色是由抗锯齿生成的,matplotlib.patches.Patch对象(matplotlib.patches.Rectangle 对象继承)支持通过 bool 关键字 antialising 禁用此功能。 ,所以

plt.Rectangle((x,y),w,h,color=c,antialiased=False)

应该可以防止这种情况发生。

这也可以在构建后通过方法完成

polygon.set_antialiased()

关于python - Matplotlib 仅保存特定颜色的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59233231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com