色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

20行Python代碼給微信頭像戴帽子

電子工程師 ? 來(lái)源:lq ? 2019-01-18 10:41 ? 次閱讀

朋友圈里@微信官方要求戴圣誕帽的活動(dòng)曾經(jīng)火爆一時(shí),有些會(huì)玩的小伙伴都悄咪咪地用美圖秀秀一類的 app 給自己頭像 p 一頂,然后可高興地表示“哎呀好神奇hhhh”,呆萌的小伙伴當(dāng)然就一直等啊等... ...作為一名堅(jiān)信“用技術(shù)解決需求”的萌新,在一個(gè)無(wú)聊的周末嘗試用python來(lái)搞一波事情。

主要思路

準(zhǔn)備兩張圖:一張頭像,一張帽子。先用人臉識(shí)別定位頭像中的人臉,給出人臉像素坐標(biāo);再根據(jù)這個(gè)坐標(biāo)確定帽子放置的坐標(biāo);最后將兩張圖片拼接后輸出。(需要注意的是,帽子是不規(guī)則圖像,除了主體外背景應(yīng)該是透明的,因此必須是四通道png格式)。gakki 醬親自演示如下:

示意圖

問(wèn)題展開(kāi)

1. 人臉識(shí)別怎么搞定?(重新造輪子?不存在的,這輩子都不可能造輪子的)。Github上一個(gè)開(kāi)源的python人臉識(shí)別庫(kù)face_recognition雙手奉

https://github.com/ageitgey/face_recognition#face-recognition

據(jù)說(shuō)識(shí)別率99.38%(頂瓜瓜啊!)。通過(guò)安裝這個(gè)庫(kù)就可以調(diào)用人臉檢測(cè)器。

2. 確定了帽子的放置位置,怎么拼接圖層?這個(gè)屬于基本的圖像操作,python提供了PIL(Python Image Lib)這么一個(gè)庫(kù)來(lái)進(jìn)行圖像處理,具體操作請(qǐng)看后面的代碼。

庫(kù)的安裝

我的環(huán)境是Ubuntu 16.04+Python2.7.12。使用Window,Mac OS和Python3的同學(xué)也可以參考,都是類似的。face_recognition這個(gè)庫(kù)比較事兒,安裝前需要依次安裝boost(boost_python),cmake,dlib這幾個(gè)依賴和庫(kù),中間出現(xiàn)任何問(wèn)題都可以通過(guò)Google解決(懶得寫(xiě) -.. -)。安裝完所有的依賴后,使用命令:

1pipinstallface_recognition2pipinstallpillow#PIL庫(kù)

完成后就可以在你的python腳本里import face_recognition和PIL了。

代碼分析

Talk is cheap, show me the code。直接上代碼:

1fromPILimportImage 2importface_recognition 3img_path=raw_input("imagepath:") 4image=face_recognition.load_image_file(img_path) 5face_locations=face_recognition.face_locations(image) 6print("Found{}face(s)inthisphotograph.".format(len(face_locations)))

第1、2行導(dǎo)入PIL庫(kù)中的Image模塊和face_recognition庫(kù)。第3行,等待用戶輸入頭像圖片的路徑。第4行,把路徑所指的圖像數(shù)據(jù)讀入image中。第5行,調(diào)用face_locations處理image中的圖像數(shù)據(jù),對(duì)圖片中的人臉進(jìn)行識(shí)別定位,定位后的得到的像素坐標(biāo)數(shù)據(jù)放在face_locations里。第6行在shell里輸出圖片里識(shí)別到的人臉的個(gè)數(shù)。

7human_img=Image.open(img_path) 8human_img=human_img.convert("RGBA") 9hat_img=Image.open("./hat.png")10hat_img=hat_img.convert("RGBA")

第7、8行,把路徑所指的圖像數(shù)據(jù)讀入human_img中,并轉(zhuǎn)換為四通道RGBA模式。9、10行讀入帽子圖像并做相同處理。

11forface_locationinface_locations:12top,right,bottom,left=face_location13top-=1014print("AfaceislocatedatpixellocationTop:{},Left:{},Bottom:{},Right:{}".format(top,left,bottom,right))15head_h=bottom-top#hightofhead16head_l=right-left#lengthofhead17hat_img=hat_img.resize((head_l,head_h))#convertsizeofhat18hat_region=hat_img19human_region=(left,top-head_h,right,top)20human_img.paste(hat_region,human_region,mask=hat_img)21human_img.show()

如果一張圖里有多張人臉,face_recognition.face_locations(image)會(huì)返回每張人臉的位置信息,存放在一個(gè)list里。因此第11行是遍歷face_locations里的每張人臉的數(shù)據(jù)。第12行解包一個(gè)人臉像素坐標(biāo)數(shù)據(jù),得到top,right,bottom,left分別為示意圖中的y1,x2,y2,x1。第13行,為啥y1要減10個(gè)像素?

因?yàn)槿四樧R(shí)別得到的y1最多到你額頭的位置,所以再把這個(gè)坐標(biāo)往上提一提帽子才戴得更自然。第14行輸出坐標(biāo)數(shù)據(jù)方便調(diào)試。第15、16行計(jì)算人臉的高度和寬度。第17行使用resize()根據(jù)人臉的大小調(diào)整帽子的大小,因?yàn)閳D像中的人臉有大有小,調(diào)整后看起來(lái)更和諧。第18行,將帽子圖像作為頂部圖層圖像。第19行,確定底部圖層(頭像圖片)被覆蓋的區(qū)域(就是帽子放置區(qū)域)。

第20行,把頂部圖層與底部圖層拼接(不太明白的看下圖)。然后一個(gè)循環(huán)結(jié)束,亦即完成圖片中一個(gè)人的戴帽操作,接著進(jìn)行下個(gè)人的戴帽,直到所有人都戴上了帽子。最后21行,完成輸出~

更新

更多人臉:

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人臉識(shí)別
    +關(guān)注

    關(guān)注

    76

    文章

    4012

    瀏覽量

    82044
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4800

    瀏覽量

    84821
  • GitHub
    +關(guān)注

    關(guān)注

    3

    文章

    472

    瀏覽量

    16492

原文標(biāo)題:20行Python代碼給微信頭像戴帽子

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    分享50條經(jīng)典的Python代碼

    今天浩道跟大家分享python學(xué)習(xí)過(guò)程中非常經(jīng)典的50條一代碼,讓大家體驗(yàn)它簡(jiǎn)潔而功能強(qiáng)大的特點(diǎn)。同時(shí)大家分享號(hào)主收集到的所有關(guān)于python
    發(fā)表于 08-16 15:00 ?1057次閱讀

    labview中用python節(jié)點(diǎn)實(shí)現(xiàn)登錄獲取好友列表,登錄怎么掃碼?

    `python節(jié)點(diǎn)對(duì)于單次輸入挺好用的,最近學(xué)習(xí)怎么實(shí)現(xiàn)python登錄獲取好友列表等信息,在pythonIDE測(cè)試通過(guò),但labview的py
    發(fā)表于 06-19 12:00

    如何用Python頭像添加國(guó)旗?

    Python頭像添加國(guó)旗的方法
    發(fā)表于 11-11 08:02

    代碼分享

    代碼
    發(fā)表于 12-30 06:01

    怎樣去使用Python頭像戴圣誕帽?

    怎樣去使用Python頭像戴圣誕帽?都有哪些步驟流程需要去操作?
    發(fā)表于 06-17 06:41

    如何實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)的目標(biāo)檢測(cè)10Python代碼幫你實(shí)現(xiàn)

    只需10Python代碼,我們就能實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)中目標(biāo)檢測(cè)。 沒(méi)錯(cuò),用這寥寥10代碼,就能實(shí)現(xiàn)目前AI產(chǎn)品中應(yīng)用廣泛的目標(biāo)檢測(cè)技術(shù)。
    的頭像 發(fā)表于 02-03 11:35 ?3063次閱讀

    如何使用50Python代碼實(shí)現(xiàn)AI的動(dòng)作平衡

    本文將為大家展示如何通過(guò) Numpy 庫(kù)和 50 Python 代碼,使用標(biāo)準(zhǔn)的 OpenAI Gym平臺(tái)創(chuàng)建智能體 (agent),就教會(huì)機(jī)器處理推車桿問(wèn)題 (cart pole problem) ,保持平衡。
    的頭像 發(fā)表于 06-16 10:40 ?3143次閱讀

    盤(pán)點(diǎn)10個(gè)一強(qiáng)大的、有趣的Python代碼

    Python是一門(mén)非常簡(jiǎn)潔而優(yōu)美的編程語(yǔ)言,在其他編程語(yǔ)言中需要繁瑣的代碼邏輯才能完成的事情,往往在Python中一就可以解決。
    的頭像 發(fā)表于 10-08 14:33 ?8785次閱讀

    使用Python讀文件的源代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用Python讀文件的源代碼免費(fèi)下載。
    發(fā)表于 10-22 17:57 ?12次下載
    使用<b class='flag-5'>Python</b>按<b class='flag-5'>行</b>讀文件的源<b class='flag-5'>代碼</b>免費(fèi)下載

    Python代碼的性能分析的命令合集

    。注意,在本教程中,我建議使用 Anaconda。1.分析一代碼要檢查一 python 代碼的執(zhí)行時(shí)間,請(qǐng)使用**%timeit**。下
    發(fā)表于 11-25 10:43 ?10次下載

    第一代碼曝光:一切的開(kāi)始

    ,廣州,一群年輕人在小黑屋里敲下了一行行代碼。 這是后臺(tái)第一天提交的代碼。 從此,人們的溝通方式變了。 如今,
    的頭像 發(fā)表于 12-03 09:40 ?4095次閱讀

    智能可穿戴帽子開(kāi)源分享

    電子發(fā)燒友網(wǎng)站提供《智能可穿戴帽子開(kāi)源分享.zip》資料免費(fèi)下載
    發(fā)表于 11-15 11:26 ?0次下載
    智能可穿<b class='flag-5'>戴帽子</b>開(kāi)源分享

    如何使用Python直接給推送消息

    ?Python可以實(shí)現(xiàn)QQ郵箱、企業(yè)等等軟件推送消息,今天咱們實(shí)現(xiàn)一下
    的頭像 發(fā)表于 01-17 11:22 ?2043次閱讀

    20個(gè)解決日常問(wèn)題的Python代碼片段!

    在本文中,將分享20 個(gè) Python 代碼片段,以幫助你應(yīng)對(duì)日常編程挑戰(zhàn)。你可能已經(jīng)知道其中一些片段,但有些其他片段對(duì)你來(lái)說(shuō)可能是新的。趕緊使用這些有用的 Python
    的頭像 發(fā)表于 03-13 09:40 ?1009次閱讀

    20個(gè)非常有用的Python單行代碼

    有用的 Python 單行代碼片段,只需一代碼即可解決特定編碼問(wèn)題!
    的頭像 發(fā)表于 03-14 17:45 ?922次閱讀
    主站蜘蛛池模板: 麻豆第一区MV免费观看网站| 亚洲日本在线不卡二区| 色WWW永久免费视频首页| 台湾果冻传媒在线观看| 亚洲日产2020乱码草莓毕| 97视频在线观看免费播放| 东京热无码中文字幕av专区| 黄色a三级三级三级免费看| 妹妹成人网| 午夜免费体验30分| 69夫妻交友网| 国产精品久久大陆| 老外的好大c的我好爽| 十次啦中文网| 在线日韩欧美一区二区三区| 成人永久免费视频网站在线观看| 国产亚洲精品成人a在线| 欧美国产影院| 亚洲欧美综合中文字幕| www亚洲欲色成人久久精品| 激情欧美日韩一区二区| 全球真实小U女视频合集| 一级做a爰片久久毛片苍井优| 别停好爽好深好大好舒服视频| 精品无码久久久久久动漫 | 久久91精品久久久久久水蜜桃| 日本精油按摩| 中国成人在线视频| 国产精品一国产精品免费| 妞干网手机免费视频| 亚洲久久少妇中文字幕| 别插我B嗯啊视频免费| 久久毛片网站| 亚洲AV无码一区二区三区乱子伦| www.伊人| 妈妈的朋友5在线观看免费完整版中文| 无人区日本电影在线观看高清| 99热国产这里只有精品9九| 精品水蜜桃久久久久久久| 挺进绝色老师的紧窄小肉六| FREE另类老女人|