红头文件rgb红色值_拿下抖音小姐姐,我写了个口红色号识别器
對于廣大“鋼鐵直男”的程序員來說,送什么禮物給女朋友一直是個(gè)世紀(jì)難題。
其實(shí)哄女朋友開心最深的套路就是花式送口紅,就問誰抵擋得住啊啊啊啊......
“沒有什么問題是一支口紅解決不了的,如果有,那就兩支。”于是,直男們紛紛開始各種買口紅、送口紅……
畢竟李佳琦一句"OMG買它”,女朋友披頭散發(fā)搶購,錢包就空了一半。
但是,口紅色號千千萬,選對了牌子才成功了一半。
快樂橙、傷心紫,姨媽紅,雞屎綠…直男眼里沒什么區(qū)別的顏色,在女生眼里各種色調(diào)、質(zhì)地細(xì)微的區(qū)別都能分析一清二楚。
那么,對于直男來說,怎么才能搞清楚如此多的口紅色號呢?
我耗費(fèi)一毫米發(fā)際線,琢磨了一下,做出了一個(gè)口紅色號識(shí)別器,希望能幫大家在關(guān)鍵時(shí)刻把深刻的革命友誼再升華一下。
先來看看效果。讓我們假設(shè),小姐姐發(fā)來了一張美妝博主的美照,并暗示你,“人家也喜歡這個(gè)顏色?!?/p>
圖片來自網(wǎng)絡(luò)
這個(gè)時(shí)候,用我們的口紅色號識(shí)別器,就能定位嘴唇,并迅速給出它的顏色隸屬哪家品牌的哪個(gè)色號。
OMG!簡直比李佳琦還準(zhǔn)確!
好啦,廢話不多說,馬上開始教學(xué)時(shí)間!
來自 Github 的口紅色號宇宙
要想識(shí)別口紅色號,先得讓機(jī)器知道到底都有哪些顏色。
聽柜姐介紹,紅色系有:“草莓紅、鐵銹紅、楓葉紅...”,其他還有“豆沙色、吃土色、番茄色...”
世界觀還未建立完全就要開始土崩瓦解,這看著有區(qū)別嗎?“豆沙色最為百搭,橘調(diào)的番茄色比較顯白...”眼前的黑不是黑,你說的紅是什么紅?
還好,在萬能的 Github 上找到了一個(gè)寶藏?cái)?shù)據(jù)庫“口紅顏色可視化”,這個(gè)數(shù)據(jù)庫堪比口紅的色號宇宙,不僅囊括了當(dāng)前最主流品牌的各種系列色號,還很良心的在色盤上排列了出來。
這個(gè)數(shù)據(jù)集是一個(gè)嵌套的字典數(shù)據(jù)結(jié)構(gòu),存為 json 串的形式,里面記錄了每個(gè)口紅品牌系列下不同口紅色號的顏色 id、名稱、和 16 進(jìn)制顏色值。
直!男!救!星!有木有!
口紅色號可視化鏈接:
https://github.com/Ovilia/lipstick不過看著這密密麻麻的顏色,真心佩服各大口紅品牌的文案高手,是怎么樣區(qū)別每一個(gè)看不出區(qū)別的顏色,并且還要分別取名字的。
傻傻分不清的我對 5 個(gè)品牌的不同系列做了一下統(tǒng)計(jì)和色號錄入,于是,剩下的就交給計(jì)算機(jī)啦。
先用番茄做個(gè)實(shí)驗(yàn)?
既然有了如此完備的色號數(shù)據(jù)庫,那么文摘菌就有了一個(gè)討巧的方法:要想找到合適的色號,可以直接截取顏色,然后在數(shù)據(jù)庫中進(jìn)行比對。
這個(gè)方法非常好操作,在上唇色之前,我們不如先拿別的紅色物品來練手。
比如,這里有一只番茄圖片,你看這個(gè)番茄它又大又圓:
在其中截取了成色均勻、無高亮的矩形圖片:
提取這張純色圖片的 RGB 值在技術(shù)上是可行的,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]): # 轉(zhuǎn)為HSV標(biāo)準(zhǔn) 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為了減少誤差,需要裁剪多個(gè)不同位置的圖片,保存在本地的一個(gè)文件夾中,讀取文件,提取顏色,求平均值,得到的番茄最終的 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番茄的顏色提取到了,那么和什么做比對呢?
當(dāng)然是口紅的數(shù)據(jù),文摘菌這兒用到了 5 個(gè)品牌,分別是圣羅蘭、香奈兒可可小姐、迪奧、美寶蓮、紀(jì)梵希,共 17 個(gè)系列,271 個(gè)口紅色號。
數(shù)據(jù)集是一個(gè)嵌套的字典數(shù)據(jù)結(jié)構(gòu),存為 json 串的形式,里面記錄了每個(gè)口紅品牌系列下不同口紅色號的顏色 id、名稱、和 16 進(jìn)制顏色值。
lipstick.json部分?jǐn)?shù)據(jù)集展示如下:
{"brands":[{"name":"圣羅蘭總結(jié)
以上是生活随笔為你收集整理的红头文件rgb红色值_拿下抖音小姐姐,我写了个口红色号识别器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑系统桌面安装教程(下载安装电脑桌面)
- 下一篇: ddos攻击工具_简单有效的ddos攻击