精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

好機會,我用Python給女同事頭像戴上口罩!

開發(fā) 后端 開發(fā)工具
突如其來的新型冠狀病毒讓全國人民春節(jié)過的誠惶誠恐,出門必須帶口罩已經(jīng)達成共識。

突如其來的新型冠狀病毒讓全國人民春節(jié)過的誠惶誠恐,出門必須帶口罩已經(jīng)達成共識。

[[315795]] 

圖片來自 Pexels

疫情防控期間,我們大家要做的就是遵從政府號令:“少出門,戴口罩、勤洗手......”,乖乖宅家就是為抗擊疫情做貢獻。

看到一些朋友叫設(shè)計同學(xué)幫忙給自己的頭像戴上口罩,作為技術(shù)人,心想一定還有更多人有這樣的訴求,不如開發(fā)一個簡單的程序來實現(xiàn)這個需求,也算是幫助設(shè)計小姐姐減少工作量。

于是我花了些時間,寫了一個叫做 face-mask[1] 的命令行工具,能夠輕松的給圖片中的人像戴上口罩,而且口罩的方向和大小都是適應(yīng)人臉的哦~

使用

①安裝 face-mask

  1. pip install face-mask 

確保 Python 版本在 3.6 及以上。

②使用 face-mask

直接指定圖片路徑即可為圖片中的人像戴上口罩,并會生成一個新的圖片(額外有 -with-mask 后綴):

  1. face-mask /path/to/face/picture 

通過指定 --show 選項,還可以使用默認圖片查看器打開新生成的圖片:

  1. face-mask /path/to/face/picture --show 

③效果

給一個人戴上口罩,效果如下圖:

給多個人戴上口罩,效果如下圖:

給動漫人物戴上口罩:

實現(xiàn)

思路

要想實現(xiàn)上面的效果,我們應(yīng)該怎么做?不妨這么想:

  • 首先是識別出人的鼻子(nose_bridge)和臉輪廓(chin)。
  • 通過臉輪廓確定出臉左點(chin_left_point)、臉底點(chin_bottom_point)和臉右點(chin_right_point)。
  • 由鼻子和臉底點確定口罩大小的高度、中心線。
  • 將口罩左右平均分為兩個部分,調(diào)整左口罩大小,寬度為臉左點到中心線的距離;調(diào)整右口罩大小,寬度為臉右點到中心線的距離;合并左右口罩為新口罩。
  • 旋轉(zhuǎn)新口罩,角度為中心線相對于 y 軸的旋轉(zhuǎn)角。
  • 將新口罩放在原圖適當(dāng)位置。

關(guān)于人臉識別,可以使用 face_recognition[2] 庫進行識別。關(guān)于圖像處理,可以使用 Pillow[3] 庫進行處理。

代碼

有了思路之后,實現(xiàn)就是件相對輕松的事情。不過對庫的熟悉和圖片的變換計算可能要花些時間。

詳細的代碼請參考如下鏈接,這里僅說明下最核心的步驟:

https://github.com/Prodesire/face-mask

人臉識別:

  1. import face_recognition 
  2.  
  3. face_image_np = face_recognition.load_image_file('/path/to/face/picture'
  4. face_landmarks = face_recognition.face_landmarks(face_image_np) 

借助 face_recognition 庫可以輕松的識別出人像,最終得到的 face_landmarks 是一個列表,里面的每個 face_landmark 都表示一個人像數(shù)據(jù)。

face_landmark 是一個字典,其中的鍵表示人像特征,值表示該特征的點的列表。比如:

  • 鍵 nose_bridge 表示鼻梁
  • 鍵 chin 表示臉頰

我們需要根據(jù)每個 face_landmark,給對應(yīng)的頭像戴上口罩。

獲得鼻子和臉頰的特征點:

  1. import numpy as np 
  2.  
  3. nose_bridge = face_landmark['nose_bridge'
  4. nose_point = nose_bridge[len(nose_bridge) * 1 // 4] 
  5. nose_v = np.array(nose_point) 
  6.  
  7. chin = face_landmark['chin'
  8. chin_len = len(chin) 
  9. chin_bottom_point = chin[chin_len // 2] 
  10. chin_bottom_v = np.array(chin_bottom_point) 
  11. chin_left_point = chin[chin_len // 8] 
  12. chin_right_point = chin[chin_len * 7 // 8] 

通過上述代碼,我們獲得了:

  • 表示上鼻梁的一個點:nose_point
  • 表示臉左點:chin_left_point
  • 表示臉右點:chin_right_point
  • 表示臉底點:chin_bottom_point

拆分、縮放和合并口罩:

  1. from PIL import Image 
  2.  
  3. _face_img = Image.fromarray(face_image_np) 
  4. _mask_img = Image.open('/path/to/mask/picture'
  5.  
  6. # split mask and resize 
  7. width = _mask_img.width 
  8. height = _mask_img.height 
  9. width_ratio = 1.2 
  10. new_height = int(np.linalg.norm(nose_v - chin_bottom_v)) 
  11.  
  12. left 
  13. mask_left_img = _mask_img.crop((0, 0, width // 2, height)) 
  14. mask_left_width = get_distance_from_point_to_line(chin_left_point, nose_point, chin_bottom_point) 
  15. mask_left_width = int(mask_left_width * width_ratio) 
  16. mask_left_img = mask_left_img.resize((mask_left_width, new_height)) 
  17.  
  18. right 
  19. mask_right_img = _mask_img.crop((width // 2, 0, width, height)) 
  20. mask_right_width = get_distance_from_point_to_line(chin_right_point, nose_point, chin_bottom_point) 
  21. mask_right_width = int(mask_right_width * width_ratio) 
  22. mask_right_img = mask_right_img.resize((mask_right_width, new_height)) 
  23.  
  24. # merge mask 
  25. size = (mask_left_img.width + mask_right_img.width, new_height) 
  26. mask_img = Image.new('RGBA'size
  27. mask_img.paste(mask_left_img, (0, 0), mask_left_img) 
  28. mask_img.paste(mask_right_img, (mask_left_img.width, 0), mask_right_img) 

上述代碼主要做了如下內(nèi)容:

  • 將口罩左右平均分為兩個部分。
  • 調(diào)整左口罩大小,寬度為臉左點到中心線的距離*寬度系數(shù) 1.2。
  • 調(diào)整右口罩大小,寬度為臉右點到中心線的距離*寬度系數(shù) 1.2。
  • 合并左右口罩為新口罩。

get_distance_from_point_to_line 用來獲取一個點到一條線的距離,具體實現(xiàn)可看源代碼。

width_ratio 是寬度系數(shù),用來適當(dāng)擴大口罩。原因我們是根據(jù)臉頰的寬度計算口罩的寬度,但口罩是待在耳朵上的,真實寬度應(yīng)該要更寬。

旋轉(zhuǎn)口罩、并放到原圖適當(dāng)位置:

  1. # rotate mask 
  2. angle = np.arctan2(chin_bottom_point[1] - nose_point[1], chin_bottom_point[0] - nose_point[0]) 
  3. rotated_mask_img = mask_img.rotate(angle, expand=True
  4.  
  5. # calculate mask location 
  6. center_x = (nose_point[0] + chin_bottom_point[0]) // 2 
  7. center_y = (nose_point[1] + chin_bottom_point[1]) // 2 
  8.  
  9. offset = mask_img.width // 2 - mask_left_img.width 
  10. radian = angle * np.pi / 180 
  11. box_x = center_x + int(offset * np.cos(radian)) - rotated_mask_img.width // 2 
  12. box_y = center_y + int(offset * np.sin(radian)) - rotated_mask_img.height // 2 
  13.  
  14. add mask 
  15. _face_img.paste(mask_img, (box_x, box_y), mask_img) 

上述代碼主要做了如下內(nèi)容:

  • 旋轉(zhuǎn)新口罩,角度為中心線相對于 y 軸的旋轉(zhuǎn)角。
  • 計算口罩應(yīng)該放置的坐標。
  • 將新口罩放在原圖的計算出的坐標下。

最后就是將新圖片保存到本地路徑,代碼不再展示。

總結(jié)

我們借助 face_recognition 庫可以輕松的識別出人像,然后根據(jù)臉頰的寬度和鼻梁位置計算出口罩的大小、方向和位置,并最終生成出戴上口罩的圖片。

整個過程并不復(fù)雜,但在坐標計算上要格外小心,如此,我們便打造了一個短小精悍的“自動戴上口罩”程序!

 

責(zé)任編輯:武曉燕 來源: Prodesire
相關(guān)推薦

2020-02-13 14:32:36

解決Maven沖突問題

2020-11-27 19:08:51

AI 數(shù)據(jù)人工智能

2020-08-24 07:52:40

代理Java動態(tài)

2021-02-20 10:56:30

人工智能人臉識別

2017-12-26 09:10:43

Python微信圣誕帽

2021-03-17 14:15:24

人臉識別人工智能AI

2020-10-31 09:06:37

C語言編程語言

2017-12-27 15:27:36

大數(shù)據(jù)數(shù)據(jù)建模數(shù)據(jù)支撐

2009-04-03 15:17:43

LinuxWindows 7機會

2009-04-04 09:36:11

Windows 7微軟操作系統(tǒng)

2020-02-13 12:50:07

人臉識別口罩護目鏡

2021-08-09 14:47:44

微信表情移動應(yīng)用

2021-07-05 09:52:05

大數(shù)據(jù)大數(shù)據(jù)“殺熟”數(shù)據(jù)監(jiān)管

2021-08-06 21:16:08

人臉識別AI人工智能

2020-03-10 17:34:57

天貓精靈

2010-03-06 08:48:23

2022-03-23 08:01:04

Python語言代碼

2010-02-24 16:47:22

戴爾員工性騷擾

2021-04-07 22:22:10

人工智能數(shù)據(jù)軟件
點贊
收藏

51CTO技術(shù)棧公眾號

涩涩在线视频| 99国产精品久久久久99打野战| 99香蕉久久| 亚洲国产精品一区二区www在线| 91丝袜脚交足在线播放| 欧美日韩国产精品综合| 亚洲不卡视频| 精品日本高清在线播放| 欧美日本韩国一区二区三区| 在线观看国产区| 一本一本久久a久久综合精品| 777奇米成人网| www.avtt| 18视频免费网址在线观看| 狠狠色综合播放一区二区| 欧美成人免费观看| 中文字幕精品久久久| 吉吉日韩欧美| 亚洲欧美偷拍三级| 亚洲综合社区网| 国产精品黄色大片| 91麻豆国产自产在线观看亚洲| 日韩一二三区视频| av网站手机在线观看| 男女av在线| 狠狠色综合播放一区二区| 97免费视频在线播放| 大胸美女被爆操| 大型av综合网站| 欧美写真视频网站| 欧美乱做爰xxxⅹ久久久| 色网站在线免费观看| 久久99精品久久久| 国产91精品不卡视频| 伊人久久久久久久久久久久久久| 国产一区二区在线视频你懂的| 日本韩国欧美国产| 日韩人妻一区二区三区蜜桃视频| 三级国产在线观看| 国产精品一区二区三区四区 | 色婷婷国产精品免| 日韩精品导航| 日韩欧美你懂的| 波多野结衣xxxx| 中国色在线日|韩| 亚洲午夜激情网页| 欧美xxxx吸乳| 日韩伦理在线电影| 国产婷婷色一区二区三区| 国产精品美女诱惑| 国产黄a三级三级三级| 日本欧美久久久久免费播放网| 国内精品国产三级国产在线专| 国产在线一卡二卡| 日韩一区电影| 一区二区三区www| 亚洲精品理论片| 精品按摩偷拍| 精品国产a毛片| 一本之道在线视频| 国产精品久久免费视频 | 久久人妻无码一区二区| av资源网站在线观看| 99精品久久久久久| 国内精品久久久久久久97牛牛| 国产mv日韩mv欧美| 国产三级精品网站| 欧美高清69hd| 日韩中文字幕区一区有砖一区| 亚州成人av在线| 国产在线综合网| 欧美精品97| 美女精品久久久| 91 在线视频| 羞羞答答成人影院www| 永久555www成人免费| 永久免费未满蜜桃| 成人高潮a毛片免费观看网站| 日韩欧美国产一区二区三区| 午夜大片在线观看| 精品视频在线播放一区二区三区 | 久久午夜无码鲁丝片| 欧美黄色大片网站| 欧美国产视频一区二区| 日本少妇激情视频| 国产精品普通话对白| 欧美性资源免费| 精品国产午夜福利| 丝袜亚洲另类丝袜在线| 国产精品久久久久av| 中文字幕一区二区三区波野结| 麻豆成人久久精品二区三区小说| 成人a在线观看| av网站在线免费看| 成人av在线影院| 久久国产精品-国产精品| 四虎精品在线| 国产精品欧美综合在线| 亚洲国产精品一区二区第一页| 国产二区视频在线观看| 中文字幕av一区二区三区高| 国产又爽又黄ai换脸| 在线观看wwwxxxx| 亚洲天堂av一区| 日本黄大片在线观看| 蜜桃视频动漫在线播放| 日本韩国欧美三级| 日本一本在线视频| 18国产精品| 国产一区二区三区视频在线观看| 国产日产在线观看| 亚洲每日更新| 国产精品一区=区| 国产成人av免费看| 91蜜桃传媒精品久久久一区二区| 少妇精品久久久久久久久久| 91精品国产91久久久久久青草| 五月天丁香久久| 欧美成人黄色网址| 6080成人| 三级精品视频久久久久| 国产亚洲精品久久久久久无几年桃| 午夜一区不卡| 91精品久久久久久蜜桃| 欧美xxx.com| 亚洲影视在线观看| 亚洲免费看av| 日韩三区视频| 欧美日韩国产二区| 欧美视频xxxx| 成人av一区二区三区| 亚洲欧美日韩精品综合在线观看| 国产三线在线| 9191久久久久久久久久久| 99精品视频免费版的特色功能| 亚洲黄页网站| 欧美国产精品日韩| 又骚又黄的视频| 91视频免费观看| 成人在线视频一区二区三区| 国产精品视频在| 国产成人在线中文字幕| 在线视频一区二区| 国产精品999在线观看| 国产精品一二一区| 欧美12av| 最近高清中文在线字幕在线观看1| 日韩亚洲欧美在线| www.com.av| 日本视频中文字幕一区二区三区| 久久av免费观看| 1024在线看片你懂得| 欧美一级二级三级蜜桃| 三级黄色在线观看| 蜜臀精品久久久久久蜜臀| 久久国产精品精品国产色婷婷| 美女日批视频在线观看| 欧美一区二区视频在线观看2022| 黄色av片三级三级三级免费看| 久久久久国产精品一区二区| 国产青春久久久国产毛片| 97免费中文视频在线观看| 中文字幕在线播| 久久蜜桃av一区二区天堂 | 国产精品久久九九| 2021天堂中文幕一二区在线观| 亚洲国产精品资源| av黄色在线播放| 亚洲国产精品激情在线观看 | 91九色综合| 色妞在线综合亚洲欧美| 国产露脸无套对白在线播放| 亚洲免费观看高清完整版在线| 黑人性生活视频| 亚洲精品乱码| 日韩三级电影免费观看| 久久久国产精品网站| 欧美成人精品三级在线观看| 亚洲精选一区二区三区| 天天色综合天天| 五月婷婷六月香| 国产精品亚洲综合一区在线观看| 国产高清www| 精品日韩毛片| 91视频免费进入| av日韩亚洲| 久久综合色影院| 亚洲 精品 综合 精品 自拍| 欧美揉bbbbb揉bbbbb| 欧美精品一区二区成人| 97精品久久久久中文字幕 | 中文字幕国产亚洲2019| 国产免费av电影| 高跟丝袜一区二区三区| 国产精品麻豆免费版现看视频| 国产成人无遮挡在线视频| 日本精品一区二区三区四区| 婷婷综合视频| 九九九热999| 成人自拍视频| 国产成+人+综合+亚洲欧洲| av网址在线播放| 亚洲欧美日韩图片| www.成人免费视频| 欧美性猛交xxxx乱大交退制版| 久久久精品人妻一区二区三区四 | 久久综合亚州| 黄色网在线视频| 欧美亚洲在线日韩| 国产亚洲精品美女久久久m| 成人高清一区| 51久久精品夜色国产麻豆| 黄色在线论坛| 中文字幕无线精品亚洲乱码一区| 香蕉视频成人在线| 日韩手机在线导航| 在线观看xxxx| 色丁香久综合在线久综合在线观看| 久久久久久久中文字幕| 中文字幕av资源一区| 亚洲AV无码国产精品| 国产传媒日韩欧美成人| 三上悠亚av一区二区三区| av成人激情| 国产精品三级一区二区| 99久久夜色精品国产亚洲1000部| 欧美日韩一区二区三区在线观看免 | 免费视频亚洲| 国产免费一区| 亚洲经典视频| 91久久精品美女高潮| 日本欧美不卡| 国产成人精品优优av| 国内精彩免费自拍视频在线观看网址 | 色婷婷免费视频| 国产精品一区二区x88av| 日本黄大片一区二区三区| 视频一区二区不卡| 久久无码高潮喷水| 亚洲欧美日韩国产综合精品二区| 欧日韩免费视频| 亚洲福利久久| av在线播放亚洲| 亚洲精品1区| 精品成在人线av无码免费看| 欧美黄色一区| 国产精品69久久久| 欧美午夜电影在线观看 | 人妻一区二区视频| 久久免费视频一区| 中国毛片在线观看| 国产亚洲精品免费| 久久久久久久久福利| 国产性色一区二区| 欧美激情aaa| 中文字幕av不卡| 欧美a级片免费看| 亚洲久本草在线中文字幕| 中文字幕手机在线观看| 亚洲欧美偷拍卡通变态| 懂色av懂色av粉嫩av| 亚洲一区自拍偷拍| 精品成人久久久| 欧美丝袜一区二区三区| 9i精品福利一区二区三区| 在线观看亚洲精品视频| 在线观看国产成人| 日韩精品中文字幕一区| 国产三级视频在线播放| 精品国产露脸精彩对白| 深夜福利在线看| 自拍偷拍亚洲一区| 国产黄色在线免费观看| 久久免费精品日本久久中文字幕| 亚洲妇女成熟| 国产欧美日韩专区发布| 最新国产精品精品视频| 久久久99国产精品免费| 色综合色综合| 免费拍拍拍网站| 日韩黄色一级片| 黄页网站在线看| 久久众筹精品私拍模特| 蜜桃av免费观看| 亚洲va中文字幕| 中文字幕理论片| 欧美精品一区二区三区很污很色的 | 欧美大胆成人| 成人女保姆的销魂服务| 精品女人视频| 亚洲精美视频| 日韩网站在线| 三级a三级三级三级a十八发禁止| 国产大片一区二区| 国产免费一区二区三区网站免费| 中文字幕在线观看一区| 国产精品美女毛片真酒店| 在线免费av一区| 国产综合在线播放| 中文字幕精品久久| 91jq激情在线观看| 国产一区二区在线免费视频| 久久久久久毛片免费看 | 欧美日韩精品一区二区天天拍小说 | 亚洲国产精品福利| 天堂资源在线中文| 26uuu久久噜噜噜噜| 欧美在线在线| 日韩精品一区二区三区丰满| 国产一区欧美| 色呦色呦色精品| 久久婷婷成人综合色| 久久久久久久久毛片| 欧美午夜不卡在线观看免费| 天天操天天舔天天干| 欧美成人精品在线观看| 国产精品麻豆成人av电影艾秋| 久久人人九九| 亚洲国产激情| 国产精品99精品无码视亚| 国产精品久久久久婷婷| 久久久久久久久久一级| 日韩精品在线观看视频| 青草青在线视频| 91免费看片在线| 日韩精品午夜| 久久午夜夜伦鲁鲁一区二区| 99久久99久久久精品齐齐| 久久免费视频播放| 91精品国产综合久久久久久久| 国产高清免费在线播放| 热久久99这里有精品| 日韩高清一级| 青青青青草视频| www.欧美精品一二区| 久久精品国产亚洲av无码娇色| 欧美一级日韩免费不卡| 含羞草www国产在线视频| 国产精品夜间视频香蕉| av一区二区在线播放| 日本老熟妇毛茸茸| 久久久国产午夜精品| 日日噜噜噜噜人人爽亚洲精品| 日韩av影片在线观看| 爱啪视频在线观看视频免费| 国产精品久久久久久久久婷婷| 韩日在线一区| 国产精品亚洲一区二区无码| 亚洲自拍偷拍av| 亚洲精品福利网站| 高清一区二区三区四区五区| 国产成人精品亚洲线观看| 日韩日韩日韩日韩日韩| 不卡一区中文字幕| 国产欧美日韩另类| 亚洲精品少妇网址| 日韩在线影院| 亚洲一一在线| 国产一区二区日韩精品| 国产午夜手机精彩视频| 日韩欧美国产综合| 久久青草伊人| 日韩av电影免费播放| 热久久国产精品| 男女做暖暖视频| 亚洲成人av在线| 中老年在线免费视频| 手机看片福利永久国产日韩| 九一久久久久久| 国产精品suv一区二区69| 日韩av中文字幕在线| free欧美| 国产在线拍揄自揄拍无码| 国产成人精品亚洲777人妖 | 日本不卡影院| 久中文字幕一区| 久久aⅴ国产欧美74aaa| 久久精品一级片| 亚洲全黄一级网站| 日韩黄色三级在线观看| 成人在线视频一区二区三区| 久久久亚洲欧洲日产国码αv| 最近日韩免费视频| 欧美二区在线播放| 欧美女优在线视频| 91视频免费入口| 色婷婷av一区二区三区gif| 男人资源在线播放| 激情小说综合区| 久久www免费人成看片高清| 国产精品suv一区二区69| 在线观看欧美日韩| 高清日韩欧美| 婷婷免费在线观看| 午夜视频在线观看一区二区 | 国产精品成人免费在线| 狠狠躁夜夜躁av无码中文幕| 国产精品福利在线观看| 亚洲天堂男人| 成年人视频软件|