用python写识别图片主要颜色的程序

用python写识别图片主要颜色的程序,第1张

# -*- coding: utf-8 -*-

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

    

if __name__=="__main__":

    from PIL import Image

    import os

    

    path = r'.\\pics\\'

    fp = open('file_color.txt','w')

    for filename in os.listdir(path):

        print path+filename

        try:

            color =  get_dominant_color(Image.open(path+filename))

            fp.write('The color of '+filename+' is '+str(color)+'\n')

        except:

            print "This file format is not support"

    fp.close()

pics文件夹和python程序在一个目录下,产生的文件名file_color.txt也在这个目录下。

看看能否帮到你

1、打开微信,主页往下拉。可以看到小程序,点击右边三点图标。

2、找到色号查询小程序。

3、点击进入小程序界面。

4、你可以选择相关的色卡簿进入查找。比如我们选择潘通C卡进入。

5、也可以直接在搜索框搜索你需要查找的色号。

6、点击相应的色号,就可以满屏查看颜色,进行与实物的色彩对比。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11928899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存