我有示例图片:https://imgur.com/a/7p3p5
最常用的颜色是:#f6f6f6 到目前为止(98%)
使用PIL:
from PIL import Image
img = Image.open(000777.sk.jpg)
width, height = img.size
convert_rgb = img.convert('RGB')
colors = img.getcolors(width * height)
这将返回最常用的颜色: (389267,(255,255,255)),(346,(254,255,255)),(281,(252,255,255))... so #ffffff,#feffff,#fffffff ...显然错误的答案......
使用ColorThief
from colorthief import ColorThief
color_thief = ColorThief('000777.sk.jpg')
palette = color_thief.get_palette(color_count=10)
这将返回(243,243,243),(52,50,50),(239,131,52),(148,148,148),(241,114,24),(210,163) ,133)] ...这是#f3f3f3,#343232,#ef8334
再次回答不正确......
发生了什么事?在线颜色标识符可以得到正确答案(如https://labs.tineye.com/color/将获得完美答案...)
有什么想法吗?
答案 0 :(得分:0)
您可以遍历每个像素,将像素颜色添加到散列图(字典)中(如果尚未包含),或者如果包含它,则增加计数器。
color = some_color;
if color in my_map
my_map["color"] = my_map["color"]+1
else
my_map["color"] = 1
之后,您可以根据地图值进行排序,或循环以获取最大值。
答案 1 :(得分:0)
终于想通了......这对我有用:
def get_colors(pic):
color_str = []
img = Image.open(pic)
width, height = img.size
quantized = img.quantize(colors=10, kmeans=3)
convert_rgb = quantized.convert('RGB')
colors = convert_rgb.getcolors()
color_str = sorted(colors, reverse=True)
final_list = []
for i in color_str:
final_list.append(i[1])
return final
这将返回RGB中的正确颜色,按最常用的
分类