当前位置:小鱼儿玄机二站 > 编程应用 > Python通过PIL获取图片首要颜色并和颜色库举办比

Python通过PIL获取图片首要颜色并和颜色库举办比

文章作者:编程应用 上传时间:2019-09-04

Python通过PIL获取图片主要颜色并和颜色库实行相比较的方法,

本文实例汇报了Python通过PIL获取图片首要颜色并和颜色库进行自己检查自纠的法门。分享给我们供我们参谋。具体深入分析如下:

这段代码首要用于从图片提取其关键颜色,类似Goolge和Baidu的图样检索时方可钦命根据颜色寻找,所以大家先供给将每张图纸的显要颜色提抽出来,然后将颜色划分到与其最相仿的水彩段上,然后就足以遵守颜色找出了。

在选取google或许baidu搜图的时候会发觉有二个图形颜色选择,认为分外幽默,有人或者会想那早晚是人为的去划分的,呵呵,有这种或者,可是臆度人会疲劳,开个玩笑,当然是经过机械识其余,海量的图样独有机器度和胆识别本事做到。

那用python能还是不能够落到实处这种效应吗?答案是:能

应用python的PIL模块的有力的图像管理效果就足以做到,上边上代码:
复制代码 代码如下:import colorsys
def get_dominant_color(image):
#颜色情势调换,以便输出rgb颜色值
    image = image.convert('RGBA')
#变动缩略图,减弱计算量,减小cpu压力
    image.thumbnail((200, 200))
    max_score = None
    dominant_color = None
    for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
        # 跳过纯鲜紫
        if a == 0:
            continue
        saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
        y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
        y = (y - 16.0) / (235 - 16)
        # 忽略高亮色
        if y > 0.9:
            continue
        # Calculate the score, preferring highly saturated colors.
        # Add 0.1 to the saturation so we don't completely ignore grayscale
        # colors by multiplying the count by zero, but still give them a low
        # weight.
        score = (saturation + 0.1) * count
        if score > max_score:
            max_score = score
            dominant_color = (r, g, b)
    return dominant_color

使用办法:

from PIL import Image
print get_dominant_color(Image.open('logo.jpg'))

这么就能回到三个rgb颜色,可是这些值是很规范的限定,那我们什么落到实处百度图片那样的色域呢??

实际方法很轻易,r/g/b都是0-255的值,大家如若把那五个值分别划分相等的间隔,然后组合,取近似值。比方:划分为0-127,和128-255,然后自由组合,能够现身三种组成,然后从中挑出相比有代表性的水彩就能够。

当然小编只是举三个事例,你也得以划分的更加细,那样突显的水彩就能够更确切~~大家赶紧试试啊

可望本文所述对咱们的python程序设计有着协理。

本文实例呈报了Python通过PIL获取图片首要颜色并和颜色库进行比较的章程。分享...

本文实例汇报了Python通过PIL获取图片主要颜色并和颜色库举行相比较的法子。分享给大家供我们参谋。具体分析如下:

这段代码主要用于从图片提取其主要颜色,类似Goolge和Baidu的图片检索时方可钦定根据颜色找出,所以大家先须要将每张图片的显要颜色提收取来,然后将颜色划分到与其最相仿的颜料段上,然后就能够依照颜色搜索了。

在使用google可能baidu搜图的时候会发觉有八个图片颜色选取,认为极度有意思,有人恐怕会想那势必是人造的去划分的,呵呵,有这种恐怕,可是测度人会疲劳,开个噱头,当然是经过机械识其余,海量的图片唯有机器度和胆识别技能成功。

这用python能否落到实处这种效应吗?答案是:能

行使python的PIL模块的雄强的图像管理功用就能够做到,下边上代码:

复制代码 代码如下:

import colorsys
def get_dominant_color(image):
#水彩方式调换,以便输出rgb颜色值
    image = image.convert('RGBA')
#扭转缩略图,收缩计算量,减小cpu压力
    image.thumbnail((200, 200))
    max_score = None
    dominant_color = None
    for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
        # 跳过纯深灰
        if a == 0:
            continue
        saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
        y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
        y = (y - 16.0) / (235 - 16)
        # 忽略高亮色
        if y > 0.9:
            continue
        # Calculate the score, preferring highly saturated colors.
        # Add 0.1 to the saturation so we don't completely ignore grayscale
        # colors by multiplying the count by zero, but still give them a low
        # weight.
        score = (saturation + 0.1) * count
        if score > max_score:
            max_score = score
            dominant_color = (r, g, b)
    return dominant_color

运用办法:

from PIL import Image
print get_dominant_color(Image.open('logo.jpg'))

这么就能够回到二个rgb颜色,可是那几个值是很标准的限量,那大家什么贯彻百度图形那样的色域呢??

骨子里方法比比较粗略,r/g/b都是0-255的值,大家只要把这多少个值分别划分相等的距离,然后组合,取近似值。举例:划分为0-127,和128-255,然后自由组合,能够出现多种组成,然后从中挑出比较有代表性的颜色就可以。

本来小编只是举多少个例证,你也足以分开的越来越细,那样展现的颜料就能越来越准确~~大家火速试试吧

盼望本文所述对大家的python程序设计有所援救。

您大概感兴趣的篇章:

  • Python 十二线程抓取图片功效相比较
  • 动用Python的PIL模块来开展图纸相比较
  • 用python达成相比两张图片的不相同

本文由小鱼儿玄机二站发布于编程应用,转载请注明出处:Python通过PIL获取图片首要颜色并和颜色库举办比

关键词: