红头文件rgb红色值_拿下抖音小姐姐,我写了个口红色号识别器

741e85c57fe57768ad93fcf6b7ad9502.png

对于广大“钢铁直男”的程序员来说,送什么礼物给女朋友一直是个世纪难题。

其实哄女朋友开心最深的套路就是花式送口红,就问谁抵挡得住啊啊啊啊......

“没有什么问题是一支口红解决不了的,如果有,那就两支。”于是,直男们纷纷开始各种买口红、送口红……

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

60fef672766c3002575f9b732050921d.gif

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

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

f50e0c290e1d7dc6b57a0f4c842f30c7.gif

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

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

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

d35f2ac316b8020b33c36e6f63d7390c.png

图片来自网络

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

e682ac97ad6bcaef68f0808dce786a7c.png

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

c5a029629bffbf4b2d77f8d6ef57239c.png

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

来自 Github 的口红色号宇宙

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

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

2161421434eba8462a600a1da2ee99b9.gif

世界观还未建立完全就要开始土崩瓦解,这看着有区别吗?“豆沙色最为百搭,橘调的番茄色比较显白...”眼前的黑不是黑,你说的红是什么红?

744864a98f55af180c6de734f2a2aa8a.png

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

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

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

口红色号可视化链接:

https://github.com/Ovilia/lipstick

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

8229d5179fb115f641d3fdac0b6069d3.png

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

先用番茄做个实验?

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

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

比如,这里有一只番茄图片,你看这个番茄它又大又圆:

7364da88f9dbdb021181c9b6e946dc93.png

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

4cdfd86e8e0bd696b7fadc06be2ef86d.png

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

import colorsysimport PIL.Image as Imagedef 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":"圣罗兰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix监控suse linux,SuSE 系统之部署 Zabbix 监控服务

SuSE 系统之部署 Zabbix 监控服务2.4 安装 Apache2 httpd-2.4.2.tar.gz#tar?-zvxf?httpd-2.4.2.tar.gz??#./configure?--prefix/usr/local/services/apache2?--with-apr/usr/local/services/apr/?--with-apr-util/usr/local/services/apr-util/?--with-pcre/usr/local/…

java反射教程_Java反射教程

java反射教程在本教程中,我主要编写一些示例来介绍Java反射可以做什么。 希望它可以给您这个概念的概述。 请留下您的评论以寻求建议。 什么是反射? 简而言之,反射是程序在运行时检查和修改对象的结构和行为的能力。 这个概念有时与内省混合…

腾讯offer是什么样子_月薪35K:2020腾讯Java后端开发详细面试流程

背景2017年我毕业于某不知名二本院校,校招进入一安防企业; 从事于后台服务接入工作。期间一直不断的提高自己,终于在今年如愿以偿,获得腾讯后台开发岗位offer。因此想借此分享成长路上的思考与困难,以及腾讯面试的整个流程。同时在…

Spring Cloud简介–配置(第一部分)

1.概述 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局…

Linux 实现网页劫持,Linux下实现劫持系统调用的总结(上)--代码及实现

godbach2015-04-07 19:03yzh07137:你好,我看了你的这篇关于linux劫持open调用的文章[url]http://bbs.chinaunix.net/thread-1946913-1-1.html[/url](有点久远了)我在ubuntu12.04.5(内核是3.13.0.20-32-generic)上试验了,结果编译报错了&#…

python下载之后无法启动_安装后启动时,适用于Python的Eric IDE崩溃

On Windows 7 I successfully installed Python 3.73 and then installed Eric 6, the Python IDE. 安装似乎已成功,但是当我启动Eric时,将打开一个窗口,然后出现错误弹出窗口,提示Python已停止。 我非常感谢您为解决此问题提供的…

深度linux更新卡,深度操作系统已发布更新 新增“ apt-get custom-update”命令行

深度操作系统现已发布最新更新,新增“apt-getcustom-update”命令行,支持指定源更新,同时修复了关闭检查应用商店的应用更新后不生效的问题。此外,使用快捷键“ctrlaltR”进行录屏实际触发为截图的问题也已修复。值得一提的是&…

苹果笔记本macbook pro如何安装python_在Mac上兼容安装Python3并保留原先的Python2.7

前言 博主的电脑为2017款macbook pro ,电脑自带python2.7版本,在网上查资料得知由于很多系统服务依赖于自带的2.7py,所以不敢卸载,因此只能安装双兼容python,这里以Python3.7版本为例。 1、安装Xcode Command Line Too…

javafx中的tree_JavaFX中的塔防

javafx中的tree我想长时间使用我的游戏引擎来编写《塔防》游戏,但是由于另一个小组努力创建JavaFX《塔防》游戏,所以我认为我宁愿创建另一款游戏。 从邮件列表中,我了解到不再开发其他游戏。 因此,我决定尝试一下。 塔防是一款非…

ubuntu linux theme,如何在Ubuntu 20.04中启用全局暗黑主题

Ubuntu 20.04在设置实用程序中引入了新的Dark暗模式。但是,当您在Gnome Shell中将其打开时,它并不是完全暗黑。系统任务栏菜单,顶部栏中的日历,通知弹出窗口和桌面上下文菜单不是暗的,而且当您在 Light,Dar…

python3语音识别模块_零基础教你玩转语音控制,学习语音控制技术,打造智能生活很简单...

大家好,我是阿乐,今天给大家讲解一下LD3320语音识别模块。先来看看模块实物,它是长这个样子的:LD3320语音识别模块实物我现在用来给大家做讲解的这个模块是已经集成了单片机在上面,这样子开发起来就更简单一些&#xf…

Apache Derby数据库用户和权限

抽象 Apache Derby很棒! 尤其是在微服务环境中,服务的数据(可能)会缩减,并且不需要更强大的RDBMS。 Derby很棒,因为它非常易于使用,尤其是在涉及用户和权限时,您不需要任何东西&…

c语言程序设计常用语句格式,全国计算机考试二级C语言程序设计要求

(一)C语言的结构1、程序的构成,main函数和其他函数。2、头文件、数据说明、函数的开始和结束标志。3、源程序的书写格式。4、C语言的风格。(二)数据类型及其运算1、C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。2、C运算符的种类、运算优先级和…

python绘制直方图显示数字_python dataframe中各元素出现次数统计及画直方图

比如: print(Counter(a[0])) Counter({sausage: 825, whole milk: 717, frankfurter: 580, tropical fruit: 482, other vegetables: 460, citrus fruit: 453, pork: 385, rolls/buns: 336, chicken: 311, canned beer: 310, beef: 304, soda: 294, root vegetables…

应用c语言编辑画图程序,应用C语言编辑画图程序

您可能感兴趣的话题:C语言核心提示:笔者在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题笔者在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题.由于电力系统一次接线图比较复杂,用一般的编程…

多少秒算长镜头_自从搞烘焙后,遇到烘焙模具换算,秒变数学渣...

从小学到大学我们学习的计量单位简直太多了,秒、米 、千克、开尔文、安培、坎德拉、摩尔......什么长度、体积、面积都知道怎么算,想想上学的时候我还是很强大的。 自从搞烘焙后,遇到烘焙模具换算,秒变数学渣...教程食谱中的一小勺…

怎样实现登录用户管理_如何编写程序实现图书管理系统里面的用户管理功能

上节课完成了库存管理功能。这节课来完成用户管理功能。编写用户管理功能用户管理主要是针对数据库表user进行维护,功能包括查询、新增、编辑和删除。特别注意,删除用户时要确保该用户的不存在订单记录。防止在查询订单时找不到对应的用户信息&#xff0…

rest开发_REST 101开发人员专用

rest开发本地代码执行 诸如C之类的高级语言中的函数将被汇编为Assembly中的过程 。 它们增加了一个间接级别,使我们不必考虑内存地址。 诸如Java之类的面向对象语言中的方法和多态性增加了另一种间接性 ,使我们不必考虑一组相似功能的特定变体。 尽管…

c语言 交互式电子白板案例,交互式电子白板教学案例

交互式电子白板教学案例交互式电子白板教学案例——电子白板让修改习作不再难钢城一小 熊莉红前言——转眼间,一年的时间稍瞬即逝。2012年的暑假,我们学校在每一个班级都安装了交互式电子白板,面对着这一新兴的产物,老师们跃跃欲试…

matlabrvctools主要功能及实际应用_【从业必备 | 收藏】ISO26262功能安全标准白皮书:关键组成、软硬件认证、测试过程、合规认证工具...

ISO26262功能安全标准白皮书:关键组成、软硬件认证、测试过程,合规的认证工具目 录背景ISO 26262的关键部分硬件组件认证软件组件认证“在实践中证明”的证据应用于现有流程测试工具认证下一步1. 背景随着各行业引进一系列产品设计和测试的标准化流…