红头文件rgb红色值_直男福利!手把手教你做一只口红色号识别器,秒变李佳琦...

ffd8f51a2e4a373a75fe82fd3621c015.png

大数据文摘编辑组出品

技术实现:宁静

七夕将至,送礼时节。直男送礼,首选口红。

毕竟李佳琦一句"OMG买它”,女朋友披头散发抢购,钱包就空了一半。

5ff0263b1034d399d31168d002af1000.gif

但是,口红色号千千万,选对了牌子才成功了一半。

快乐橙、伤心紫,姨妈红,鸡屎绿…直男眼里没什么区别的颜色,在女生眼里各种色调、质地细微的区别都能分析一清二楚。

32680b9fee704f718f30338dfe5480ae.gif

那么,对于直男来说,怎么才能搞清楚如此多的口红色号呢?

文摘菌耗费一毫米发际线,琢磨了一下,做出了一个口红色号识别器,希望能帮大家在七夕把深刻的革命友谊再升华一下。

先来看看效果。

让我们假设,七夕前夕,小姐姐发来了一张美妆博主的美照,并暗示你,“人家也喜欢这个颜色。”

828f475655879a94c473fc0744f08e92.png

图片来自网络

这个时候,用我们的口红色号识别器,就能定位嘴唇,并迅速给出它的颜色隶属哪家品牌的哪个色号。

de727d5e107de117b475f0a6a13f14b9.png

OMG!简直比李佳琦还准确!

4f54bb188928441cef3080f345a40813.png

好啦,废话不多说,马上开始教学时间!

来自Github的口红色号宇宙

要想识别口红色号,先得让机器知道到底都有哪些颜色。

文摘菌听柜姐介绍,红色系有:“草莓红、铁锈红、枫叶红...”,其他还有“豆沙色、吃土色、番茄色...”

0cedd1f7639c7c52306e22c5e35b79ee.gif

世界观还未建立完全就要开始土崩瓦解,这看着有区别吗?

“豆沙色最为百搭,橘调的番茄色比较显白...”

眼前的黑不是黑,你说的红是什么红?

9d4ed612240bd9dc743de50d83d43921.png

还好,在万能的github上,文摘菌找到了一个宝藏数据库“口红颜色可视化”,这个数据库堪比口红的色号宇宙,不仅囊括了当前最主流品牌的各种系列色号,还很良心的在色盘上排列了出来。

这个数据集是一个嵌套的字典数据结构,存为json串的形式,里面记录了每个口红品牌系列下不同口红色号的颜色id、名称、和16进制颜色值。

直!男!救!星!有木有!

口红色号可视化链接:

https://github.com/Ovilia/lipstick

不过看这这密密麻麻的颜色,真心佩服各大口红品牌的文案高手,是怎么样区别每一个看不出区别的颜色,并且还要分别取名字的。

189fa3d498abe7b62c3807b5279ab210.png

傻傻分不清的文摘菌对5个品牌的不同系列做了一下统计和色号录入,于是,剩下的就交给计算机啦。

先用番茄做个实验?

既然有了如此完备的色号数据库,那么文摘菌就有了一个讨巧的方法:要想找到合适的色号,可以直接截取颜色,然后在数据库中进行比对。

这个方法非常好操作,在上唇色之前,我们不如先拿别的红色物品来练手。

比如,这里有一只番茄图片。

你看这个番茄它又大又圆:

2637353d852da4252d63e6724f752580.png

文摘菌在其中截取了成色均匀、无高亮的矩形图片:

提取这张纯色图片的RGB值在技术上是可行的,getcolor.py代码如下:

import colorsysimport PIL.Image as Image def get_dominant_color(image): max_score = 0.0001 dominant_color = None for count,(r,g,b) in image.getcolors(image.size[0]*image.size[1]): # 转为HSV标准 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 score = (saturation+0.1)*count if score > max_score: max_score = score dominant_color = (r,g,b) return dominant_color

为了减少误差,需要裁剪多个不同位置的图片,保存在本地的一个文件夹中,读取文件,提取颜色,求平均值,得到的番茄最终的RGB颜色,代码如下:

import osimport getcolorfrom os.path import join as pjoinfrom scipy import miscdef load_color(color_dir,list): count = 0 for dir in os.listdir(color_dir): img_dir = pjoin(color_dir, dir) image = getcolor.Image.open(img_dir) image = image.convert('RGB') get=getcolor.get_dominant_color(image) list.append(get) count = count+1 #print(person_dir) #print(count) return countdef Mean_color(count,list): Mean_R=Mean_G=Mean_B=0 for i in range(count): tuple=list[i] Mean_R+=tuple[0] Mean_G+=tuple[1] Mean_B+=tuple[2] MeanC=((int)(Mean_R/count),(int)(Mean_G/count),(int)(Mean_B/count)) return Me

番茄的颜色提取到了,那么和什么做比对呢?

当然是口红的数据,文摘菌这儿用到了5个品牌,分别是圣罗兰、香奈儿可可小姐、迪奥、美宝莲、纪梵希,共17个系列,271个口红色号,数据集是一个嵌套的字典数据结构,存为json串的形式,里面记录了每个口红品牌系列下不同口红色号的颜色id、名称、和16进制颜色值,lipstick.json部分数据集展示如下:

{"brands":[{"name":"圣罗兰
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值