无论绘制什么图表,配色方案都是非常重要的,配的好,整幅图看起来会自然美观,反之就可能很别扭。所谓的配色,笔者觉得就是一幅图表的几种主要颜色,一般绘图的工具都会提供一些调色板,供我们配色。但是工具提供的颜色色终究是比较有限的,有时我们可能需要自己配色。如果没有美术基础,自己配起来会比较难,这时我们可能需要借鉴其他的好看的图表的配色。用取色器一个一个的取色显得有些繁琐,不过最近笔者发现了一个小工具haishoku,它借助pillow获取色彩列表,可自动获取一幅图的主色调和配色方案,最多可以提取8种配色。haishoku只有300多行代码,体量很小,也是一个学习CV的小案例。以下将用haishoku提取配色方案,并用seaborn绘图,一起来看看吧。
copyright © 意疏:https://blog.csdn.net/sinat_35907936/article/details/120589389
Haishoku简介
haishoku代码的核心是用pillow来获取一幅图像的颜色列表,使用Image模块的getcolors方法,该方法返回某RGB出现的频次和RGB值组成的元组,如下所示。注:maxcolors默认为256,即默认的最大颜色数只有256,如果输入图像中的颜色数大于256,需要修改默认值,否则getcolors返回会为空值。
from PIL import Image
img = Image.open('palette.png').convert('RGB')
# 缩小图片,以减少计算量和限制最大色彩数
img = img.resize((256, 256),Image.ANTIALIAS)
colors = img.getcolors(maxcolors=256*256)
colors_sorted_freq = sorted(colors, key=lambda x:x[0], reverse=True)
print(colors_sorted_freq)
颜色列表:下图左与下图右的颜色列表
[(21025, (255, 255, 255)),
(5544, (64, 101, 156)),
(4992, (162, 212, 37)),
(4626, (141, 232, 235)),
(4394, (207, 177, 45)),
(4077, (147, 174, 243)),
(3196, (206, 59, 103)),
(3083, (98, 67, 82)),
(2624, (115, 217, 143)),
(365, (208, 178, 48)),
...,
]
[(101, (43, 46, 89)),
(100, (42, 45, 88))