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

圣誕節(jié),用Python給自己加頂“圣誕帽”

開發(fā) 后端 開發(fā)工具
每年到這個時候,微信好友的頭像都會開始換上「圣誕」皮膚。最常見的就是加個圣誕小帽子了。

 每年到這個時候,微信好友的頭像都會開始換上「圣誕」皮膚。最常見的就是加個圣誕小帽子了。

[[253385]]

 

當然這種事情用很多 P 圖軟件都可以做到,微信搜索「圣誕帽」也會有各種小程序出現(xiàn),但是使用之前的驗證,總會要求綁定微信等各種信息,接受各種彈幕廣告,甚至還有的需要分享才可以保存圖片。

那么作為程序員,有沒有其他添加的辦法呢?當然有!

[[253386]]

 

用到的工具:

  • OpenCV(畢竟我們主要的內容就是 OpenCV...)
  • dlib(dlib 的人臉檢測比 OpenCV 更好用,而且 dlib 有 OpenCV 沒有的關鍵點檢測。)

用到的語言:

  • Python,但是完全可以改成 C++ 版本。

素材準備

首先我們需要準備一個圣誕帽的素材,格式***為 PNG,因為 PNG 的話我們可以直接用 Alpha 通道作為掩膜使用。

我們用到的圣誕帽如下圖:

 

我們通過通道分離可以得到圣誕帽圖像的 Alpha 通道。代碼如下:

  1. r,g,b,a = cv2.split(hat_img)  
  2. rgb_hat = cv2.merge((r,g,b)) 
  3.  
  4. cv2.imwrite("hat_alpha.jpg",a) 

為了能夠與 rgb 通道的頭像圖片進行運算,我們把 rgb 三通道合成一張 rgb 的彩色帽子圖。

Alpha 通道的圖像如下圖所示:

 

人臉檢測與人臉關鍵點檢測

我們用下面這張圖作為我們的測試圖片:

 

下面我們用 dlib 的正臉檢測器進行人臉檢測,用 dlib 提供的模型提取人臉的五個關鍵點。

代碼如下:

  1. # dlib人臉關鍵點檢測器 
  2.       predictor_path = "shape_predictor_5_face_landmarks.dat" 
  3.       predictor = dlib.shape_predictor(predictor_path)   
  4.  
  5.       # dlib正臉檢測器 
  6.       detector = dlib.get_frontal_face_detector() 
  7.  
  8.       # 正臉檢測 
  9.       dets = detector(img, 1) 
  10.  
  11.       # 如果檢測到人臉 
  12.       if len(dets)>0:   
  13.           for d in dets: 
  14.               x,y,w,h = d.left(),d.top(), d.right()-d.left(), d.bottom()-d.top() 
  15.               # x,y,w,h = faceRect   
  16.               cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2,8,0) 
  17.  
  18.               # 關鍵點檢測,5個關鍵點 
  19.               shape = predictor(img, d) 
  20.               for point in shape.parts(): 
  21.                   cv2.circle(img,(point.x,point.y),3,color=(0,255,0)) 
  22.  
  23.               cv2.imshow("image",img) 
  24.               cv2.waitKey()   

這部分效果如下圖:

 

調整帽子大小

我們選取兩個眼角的點,求中心作為放置帽子的 x 方向的參考坐標,y 方向的坐標用人臉框上線的 y 坐標表示。

然后我們根據(jù)人臉檢測得到的人臉的大小調整帽子的大小,使得帽子大小合適。

  1. # 選取左右眼眼角的點 
  2.               point1 = shape.part(0) 
  3.               point2 = shape.part(2) 
  4.  
  5.               # 求兩點中心 
  6.               eyes_center = ((point1.x+point2.x)//2,(point1.y+point2.y)//2) 
  7.  
  8.               # cv2.circle(img,eyes_center,3,color=(0,255,0))   
  9.               # cv2.imshow("image",img) 
  10.               # cv2.waitKey() 
  11.  
  12.               #  根據(jù)人臉大小調整帽子大小 
  13.               factor = 1.5 
  14.               resized_hat_h = int(round(rgb_hat.shape[0]*w/rgb_hat.shape[1]*factor)) 
  15.               resized_hat_w = int(round(rgb_hat.shape[1]*w/rgb_hat.shape[1]*factor)) 
  16.  
  17.               if resized_hat_h > y: 
  18.                   resized_hat_h = y-1 
  19.  
  20.               # 根據(jù)人臉大小調整帽子大小 
  21.               resized_hat = cv2.resize(rgb_hat,(resized_hat_w,resized_hat_h)) 

提取帽子和需要添加帽子的區(qū)域

按照之前所述,去 Alpha 通道作為 mask,并求反。這兩個 mask 一個用于把帽子圖中的帽子區(qū)域取出來,一個用于把人物圖中需要填帽子的區(qū)域空出來。

后面你將會看到:

  1. # 用alpha通道作為mask 
  2.               mask = cv2.resize(a,(resized_hat_w,resized_hat_h)) 
  3.               mask_inv =  cv2.bitwise_not(mask) 

從原圖中取出需要添加帽子的區(qū)域,這里我們用的是位運算操作。

  1. # 帽子相對與人臉框上線的偏移量 
  2.               dh = 0 
  3.               dw = 0 
  4.               # 原圖ROI 
  5.               # bg_roi = img[y+dh-resized_hat_h:y+dh, x+dw:x+dw+resized_hat_w] 
  6.               bg_roi = img[y+dh-resized_hat_h:y+dh,(eyes_center[0]-resized_hat_w//3):(eyes_center[0]+resized_hat_w//3*2)] 
  7.  
  8.               # 原圖ROI中提取放帽子的區(qū)域 
  9.               bg_roi = bg_roi.astype(float
  10.               mask_inv = cv2.merge((mask_inv,mask_inv,mask_inv)) 
  11.               alpha = mask_inv.astype(float)/255 
  12.  
  13.               # 相乘之前保證兩者大小一致(可能會由于四舍五入原因不一致) 
  14.               alpha = cv2.resize(alpha,(bg_roi.shape[1],bg_roi.shape[0])) 
  15.               # print("alpha size: ",alpha.shape) 
  16.               # print("bg_roi size: ",bg_roi.shape) 
  17.               bg = cv2.multiply(alpha, bg_roi) 
  18.               bg = bg.astype('uint8'

這是的背景區(qū)域(bg)如下圖所示。可以看到,剛好是需要填充帽子的區(qū)域缺失了。

 

然后我們提取帽子區(qū)域,代碼如下:

  1. # 提取帽子區(qū)域 
  2.    hat = cv2.bitwise_and(resized_hat,resized_hat,mask = mask) 

提取得到的帽子區(qū)域如下圖。帽子區(qū)域正好與上一個背景區(qū)域互補。

 

添加圣誕帽

***我們把兩個區(qū)域相加。再放回到原圖中去,就可以得到我們想要的圣誕帽圖了。

這里需要注意的就是,相加之前 resize 一下保證兩者大小一致,因為可能會由于四舍五入原因不一致。

  1. # 相加之前保證兩者大小一致(可能會由于四舍五入原因不一致) 
  2.               hat = cv2.resize(hat,(bg_roi.shape[1],bg_roi.shape[0])) 
  3.               # 兩個ROI區(qū)域相加 
  4.               add_hat = cv2.add(bg,hat) 
  5.               # cv2.imshow("add_hat",add_hat)  
  6.  
  7.               # 把添加好帽子的區(qū)域放回原圖 
  8.               img[y+dh-resized_hat_h:y+dh,(eyes_center[0]-resized_hat_w//3):(eyes_center[0]+resized_hat_w//3*2)] = add_hat 

我們得到的效果圖如下圖所示:

 

***祝大家圣誕節(jié)快樂!

 

[[253394]]

 


 

責任編輯:武曉燕 來源: CVPy
相關推薦

2017-12-22 17:12:54

圣誕節(jié)

2015-12-04 09:38:03

2013-01-28 09:11:56

圣誕推廣移動應用

2021-12-24 11:58:20

Shell腳本圣誕樹編程語言

2017-12-26 09:10:43

Python微信圣誕帽

2011-12-20 14:49:21

投影儀推薦

2019-12-25 15:22:20

Python 開發(fā)編程語言

2021-12-06 14:02:25

勒索軟件攻擊數(shù)據(jù)泄露

2022-12-22 08:22:17

Python圖像圖像處理

2020-12-24 13:20:17

機器人人工智能圣誕節(jié)

2009-02-19 08:49:11

Windows 7發(fā)布日期

2012-12-28 11:23:36

App Store圣誕節(jié)

2015-12-25 16:30:21

JavaScript代碼圣誕樹

2009-12-25 17:10:54

2013-01-04 11:08:20

云瀏覽器遨游

2021-12-31 11:35:40

藍牙漏洞玩具Fisher-Pric

2009-05-12 09:13:17

微軟SQLSQL Server

2010-12-27 14:26:04

2011-12-28 10:23:30

Google

2011-12-29 09:15:36

Android之父安迪·魯賓Android設備
點贊
收藏

51CTO技術棧公眾號

欧洲精品码一区二区三区免费看| 亚洲免费一在线| 日韩成人手机在线| 日韩专区一区二区| 蜜桃av一区二区在线观看 | 可以直接在线观看的av| 日本91福利区| 久久免费国产视频| 黑人巨大精品欧美| 精品国产麻豆| 在线区一区二视频| 久久久久久久久久久综合| 精品欧美不卡一区二区在线观看| 国产一区二区日韩精品| 欧美中文字幕视频在线观看| 欧美黑人猛猛猛| 精品在线观看入口| 精品国产免费一区二区三区四区| 不卡av免费在线| 国产极品人妖在线观看| 国产精品第一页第二页第三页| 国产精品免费一区二区三区四区| 在线免费观看视频网站| 亚洲欧洲日本mm| 欧美成年人网站| 91麻豆制片厂| 日韩中文视频免费在线观看| 日韩欧美精品在线不卡 | 欧美午夜电影网| 日韩a级在线观看| 青青影院在线观看| 久久久精品影视| 国产精品中出一区二区三区| 国产成人精品a视频| 日韩在线a电影| 欧美视频成人| 国产欧美一区二区在线观看| 黄色91av| 全国男人的天堂网| 国产99一区视频免费| 成人av番号网| 夜夜躁很很躁日日躁麻豆| 91精品国产91久久久久| 日韩在线不卡av| 精品日韩在线| 亚洲美女www午夜| 国产草草浮力影院| h视频久久久| 欧美大片在线观看| 老女人性生活视频| 青草伊人久久| 日韩一级二级三级精品视频| 交换做爰国语对白| 国产不卡精品| 7777女厕盗摄久久久| 国产免费中文字幕| 国产精品高清一区二区| 3d动漫精品啪啪1区2区免费| 香蕉视频999| 天天综合在线观看| 3d成人h动漫网站入口| 亚洲女人在线观看| 日本一区二区免费高清| 欧美日韩在线二区| 精品视频www| 国产精品三上| 欧美手机在线视频| 亚洲黄色小视频在线观看| 日韩欧美看国产| 欧美在线观看视频一区二区三区| 一区二区三区免费播放| 成人在线观看免费视频| 欧美日韩一区在线观看| av中文字幕网址| 这里视频有精品| 日韩第一页在线| 在线免费观看视频| 亚洲v在线看| 欧美极品美女电影一区| av大片免费观看| 日韩电影在线一区二区| 成人看片人aa| 人妻一区二区三区| 久久久美女毛片| 日韩av电影免费在线| 日本福利专区在线观看| 一区二区三区四区在线| 欧美国产激情视频| 精品女同一区二区三区在线观看| 欧美va亚洲va香蕉在线| 少妇特黄一区二区三区| 我不卡神马影院| 2018国产精品视频| 97成人在线观看| 不卡视频在线观看| 相泽南亚洲一区二区在线播放| av在线官网| 欧美性高跟鞋xxxxhd| 爱豆国产剧免费观看大全剧苏畅| 秋霞综合在线视频| 久久夜精品香蕉| 日韩精品一区二区亚洲av| 精品一区二区三区免费观看| 国产视频一区二区三区四区| 欧美成人三区| 色八戒一区二区三区| 午夜诱惑痒痒网| 神马午夜久久| 欧美成人网在线| 自拍偷拍第八页| av在线不卡观看免费观看| 91国产丝袜播放在线| av资源中文在线| 欧美日韩中文字幕一区二区| 在线精品视频播放| 国产精品伦理久久久久久| 国产91成人video| 国产成人精品一区二区无码呦| 91色九色蝌蚪| 成人免费a级片| 午夜不卡久久精品无码免费| 日本免费在线一区| 亚洲欧美999| 久久精品波多野结衣| 另类欧美日韩国产在线| 欧美日韩一区在线视频| 电影在线观看一区| 精品少妇一区二区三区免费观看 | 久久亚洲精品国产精品紫薇 | 免费黄色在线视频| 欧美精品自拍| 成人黄色免费网站在线观看| 国产在线网站| 色综合一区二区三区| 国产一级免费片| 欧美黄在线观看| 91久久夜色精品国产网站| av资源网站在线观看| 色久优优欧美色久优优| 在线 丝袜 欧美 日韩 制服| 亚洲高清资源| 国产精品免费一区二区三区在线观看 | 免费看久久久| 国内精品一区二区三区| 亚洲精品视频91| 一区二区三区中文在线观看| 蜜桃视频无码区在线观看| 一区二区三区午夜视频| 成人午夜小视频| 操你啦在线视频| 欧美一区二区三区电影| 免费在线观看h片| 国产精品88av| 欧美久久在线观看| 精品按摩偷拍| 日本精品视频在线观看| 成人在线免费公开观看视频| 欧美色中文字幕| 特黄一区二区三区| 韩国av一区二区三区| 久久亚洲a v| 欧美三级午夜理伦三级在线观看 | 无码视频在线观看| 中文字幕免费一区| 久久精品亚洲天堂| 欧美日韩网站| 久久免费99精品久久久久久| 成人交换视频| 久久精品一区中文字幕| 亚洲av无码乱码国产精品| 精品久久久久久国产| 人妻体内射精一区二区| 久久国产精品72免费观看| 韩国无码av片在线观看网站| 狠狠久久伊人| 国产精品电影久久久久电影网| 麻豆视频免费在线观看| 精品少妇一区二区三区在线播放| 国产乱国产乱老熟| 中文字幕一区二区三区色视频| 在线观看欧美一区二区| 国产精品视频| 一道本在线观看视频| 欧美成人基地| 国产日韩欧美在线| 超碰在线cao| 在线看日韩欧美| 亚洲成人黄色片| 欧美主播一区二区三区| 欧美三级日本三级| 国产香蕉久久精品综合网| 污污网站在线观看视频| 国产精品久久国产愉拍| 一区二区三区四区五区视频 | 日本午夜精品一区二区三区| 国产成人免费av一区二区午夜| 97视频免费观看| 人妻体体内射精一区二区| 97人妻精品一区二区三区| 国产精品第五页| 国产女人18毛片水真多18| 日韩中文字幕亚洲一区二区va在线| 欧美精品一区二区三区久久久| 成人免费看片98| 欧美国产精品专区| japanese在线观看| 久久99国产精品麻豆| 激情伊人五月天| 女人色偷偷aa久久天堂| 日韩av一级大片| 免费成人蒂法| 成人9ⅰ免费影视网站| 国产精品一区二区免费福利视频| 高清欧美电影在线| 米奇精品一区二区三区| 亚洲欧洲一区二区三区久久| 午夜精品久久久久久久99| 欧美中文字幕一二三区视频| 日本午夜精品理论片a级app发布| 国产精品久久久久国产精品日日| aaaaaav| 成人一区二区三区视频在线观看| 激情五月婷婷基地| 男人的天堂久久精品| 91黄色小网站| 国产精品久久777777毛茸茸| 黄色大片中文字幕| 欧美激情视频一区二区三区在线播放 | 最新69国产成人精品视频免费| 亚洲av片在线观看| 精品国产乱码久久久久久蜜臀| 国产日韩欧美一区二区东京热| 欧美日韩视频第一区| 国产主播第一页| 色先锋aa成人| 青青青国产在线| 精品久久久久久中文字幕大豆网| 久久无码精品丰满人妻| 亚洲精品国产a| 黄色在线观看免费| 亚洲精品欧美专区| 毛片aaaaa| 亚洲国产一区二区在线播放| 久久精品一级片| 亚洲午夜久久久久久久久久久| 男女免费视频网站| 亚洲国产视频直播| 四虎永久在线精品| 黄网站色欧美视频| 国产精品视频久久久久久久| 午夜精品久久久久久不卡8050| 国产精品16p| 日韩欧美在线观看视频| 中文字幕日韩免费| 欧美三级一区二区| 一级片视频网站| 欧美一卡二卡三卡| 丰满熟妇人妻中文字幕| 日韩电影中文字幕| 国产福利在线视频| 少妇高潮久久久久久潘金莲| 麻豆传媒在线完整视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 精品久久国产一区| 99理论电影网| 久久精品色综合| 欧美精品一区在线发布| 不卡一区综合视频| 永久免费看av| 亚洲一区成人| 亚洲欧美国产日韩综合| 国产伦精品一区二区三区视频青涩| 亚洲午夜精品在线观看| 成人ar影院免费观看视频| 人妻大战黑人白浆狂泄| 国产精品伦理在线| 精品国产乱码一区二区三| 成人精品免费看| 丝袜美腿中文字幕| 国产精品美女一区二区三区| h色网站在线观看| 精品国产乱码久久久久久虫虫漫画| 久久久黄色大片| 欧美精品在线一区二区| 国精品人妻无码一区二区三区喝尿| 91tv官网精品成人亚洲| 日韩免费电影一区二区| 99久久这里只有精品| 亚洲一区二区三区av无码| 日本女人性生活视频| 国产成a人亚洲| 偷拍女澡堂一区二区三区| 国产精品初高中害羞小美女文| 久青草视频在线观看| 日本乱人伦一区| 亚洲国产精品suv| 这里只有精品丝袜| 韩日毛片在线观看| 91免费看片在线| 九九热爱视频精品视频| 色哺乳xxxxhd奶水米仓惠香| 久久亚洲综合| 在线免费看黄色片| 国产精品久久久久影院| 亚洲第一在线播放| 日韩欧美一二三区| 第一福利在线| 91国语精品自产拍在线观看性色| 先锋影音一区二区| 欧美极品一区二区| 黄色亚洲精品| 日本黄色三级网站| 亚洲欧洲一区二区在线播放| 久久久久久久久久成人| 亚洲精品一区二区三区福利| 日本视频不卡| 2019中文字幕在线免费观看| 亚洲伊人影院| 大桥未久一区二区三区| 免费在线观看不卡| 自拍偷拍视频亚洲| 精品久久久久久久久中文字幕| 国产成人精品a视频| 久久精品一区中文字幕| 国产原创一区| 日本不卡在线播放| 久久国产福利| 日本高清www| 色婷婷综合久久久久中文 | 久久蜜桃资源一区二区老牛| www.四虎在线| 一片黄亚洲嫩模| www香蕉视频| 欧美精品日韩三级| 国产午夜精品一区在线观看| 亚洲欧洲精品在线| 精品一区免费av| 国产又色又爽又高潮免费| 欧美在线观看视频在线| 97视频精彩视频在线观看| 日韩av手机在线看| 亚洲婷婷影院| 99免费视频观看| 国产欧美综合在线观看第十页| 区一区二在线观看| 一区二区三区国产在线观看| 伊人久久综合一区二区| 欧美激情专区| 日韩中文字幕91| 青青青视频在线播放| 欧美日韩精品一区二区三区| 在线播放麻豆| 91亚洲国产成人精品性色| 亚洲成人二区| 美女扒开腿免费视频| 精品久久久久国产| 国产在线一二三| 国产在线一区二区三区| 一级欧洲+日本+国产 | 中文字幕 日韩有码| 最近2019年日本中文免费字幕| 亚洲欧美综合久久久久久v动漫| 中文视频一区视频二区视频三区| 精品一区二区久久久| 青娱乐91视频| 亚洲激情视频在线| av有声小说一区二区三区| 色综合影院在线观看| 国产综合成人久久大片91| 久久黄色免费网站| 精品视频www| 精品国产美女a久久9999| 国产激情片在线观看| 成人av在线观| 日韩中文字幕高清| 久久亚洲国产精品| 国产精品毛片视频| 久久九九国产视频| 亚洲另类色综合网站| 色婷婷av一区二区三区之红樱桃 | 亚洲欧美一二三区| 久久久精品国产一区二区| 国产suv精品一区| 国产精品无码一本二本三本色| 亚洲天堂a在线| 日韩专区第一页| 国产欧美日韩免费| 亚洲久久一区| 一本在线免费视频| 亚洲第一福利在线观看| 超薄肉色丝袜脚交一区二区| 日韩视频一二三| 久久久亚洲精品石原莉奈| 国产精品免费无遮挡| 97视频在线观看免费| 欧美日韩一二三四| 在线视频 日韩| 91精品在线一区二区| 成人欧美大片| 99热这里只有精品免费|