Matplotlib仅使用特定颜色保存图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib仅使用特定颜色保存图像相关的知识,希望对你有一定的参考价值。
我正在使用以下示例代码来创建图像蒙版。面罩需要具有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)
测试图像颜色的代码:
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.Patch
对象继承了)支持通过bool关键字matplotlib.patches.Rectangle
禁用此颜色,所以
antialising
应避免这种情况。
这也可以通过方法构造后完成
antialising
以上是关于Matplotlib仅使用特定颜色保存图像的主要内容,如果未能解决你的问题,请参考以下文章
仅考虑特定像素(而非完整图像)的OpenCV颜色直方图calcHist