女友电脑私存思聪帅照,我用python偷梁换柱...
今天晚上,女朋友說電腦比較卡,讓我?guī)退謇硪幌隆W鳛樗壑械某措u技術(shù)男,我答應(yīng)等她洗完澡出來就給她搞定。
解決電腦卡頓問題,無非就是掃一下毒,看看有沒有自動運(yùn)行的病毒,或者清理一下緩存和磁盤碎片,亦或者看看 C 盤剩余容量大小之類的。
我三下五除二就搞定了,但是在清理 C 盤文件時,我發(fā)現(xiàn)她的某個文件夾下面有好多照片,打開一看,我驚呆了,這不就是最近比較火的“撕蔥”嗎?
不光如此,圖片還是以“老公1”、“老公2”等等的順序命名的,居然暗地里做撕蔥的小迷妹,還稱呼“老公”!
雖然我從小吃魚卡刺,喝了不少醋,但是看到這個比以往任何時候喝的醋都多。
老公?我突然靈機(jī)一動,我要丑化這些圖片,讓她下次打開時氣得刪掉它們,嘻嘻!
我打開 Photoshop ,想著用 PS 的方法替換頭像。轉(zhuǎn)念一想,不行,女朋友洗澡時間有限,一張張?zhí)幚硖臅r了,我得想個批量處理的辦法。
突然想起來了以前做過類似的事情,借助人臉識別接口 API 可以搞定。
時間有限,廢話不多說,趕緊擼起袖子加油干!
尋找目標(biāo)
我打算用人臉融合的方式來丑化圖片,所以我先要找到一張比較丑的人臉照片。不知道為什么,第一反應(yīng)是去搜黃渤黃老師的,對不住了!
我去百度上隨手搜了一張,長這樣:
人臉識別 API
我這里使用的是 Face++(曠視科技)的人工智能平臺 API 接口,據(jù)說他們家比較專業(yè),這一塊做得比較好,想著還是要支持一下。
他們家的網(wǎng)站是:
https://console.faceplusplus.com.cn/首先需要注冊一下,注冊完了之后進(jìn)入首頁的“應(yīng)用管理”功能,創(chuàng)建一個應(yīng)用,然后就可以獲取到一個?API Key?和?API Secret,這兩個東西非常有用,基本上你使用他們家的接口都需要。
我們要實(shí)現(xiàn)兩張圖片的人臉融合,首先需要識別兩張圖片中的人臉,然后才能進(jìn)行融合。
所以我們首先需要使用人臉識別功能里面的人臉檢測 API ,文檔說明:
https://console.faceplusplus.com.cn/documents/4888373這里有詳細(xì)的 API 調(diào)用方法,參數(shù)和返回也都有列出,按照文檔的方式使用即可。
檢測到人臉之后,我們就可以進(jìn)行融合了,這時需要使用另一個 API 接口,文檔說明:
https://console.faceplusplus.com.cn/documents/20813963代碼實(shí)現(xiàn)
根據(jù)上面的思路,我們可以先處理兩張圖片的人臉融合,代碼如下:
import base64 import requests import json import simplejson# 第一步,獲取人臉關(guān)鍵點(diǎn) api_key = '你的apikey' api_secret = '你的apisecret'def find_face(imgpath):http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'data = {"api_key": api_key,"api_secret": api_secret,"image_url": imgpath,"return_landmark": 1 # 是否檢測并返回人臉關(guān)鍵點(diǎn)}files = {"image_file": open(imgpath, "rb")}response = requests.post(http_url, data=data, files=files)req_con = response.content.decode('utf-8')req_dict = json.JSONDecoder().decode(req_con)this_json = simplejson.dumps(req_dict)this_json2 = simplejson.loads(this_json)faces = this_json2['faces']list0 = faces[0]rectangle = list0['face_rectangle']return rectangle# 第二步,換臉 # number表示換臉的相似度 def merge_face(image_url1, image_url2, image_url, number):ff1 = find_face(image_url1)ff2 = find_face(image_url2)rectangle1 = str(str(ff1['top']) + "," + str(ff1['left']) + "," + str(ff1['width']) + "," + str(ff1['height']))rectangle2 = str(ff2['top']) + "," + str(ff2['left']) + "," + str(ff2['width']) + "," + str(ff2['height'])url_add = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface"f1 = open(image_url1, 'rb')f1_64 = base64.b64encode(f1.read())f1.close()f2 = open(image_url2, 'rb')f2_64 = base64.b64encode(f2.read())f2.close()data = {"api_key": api_key,"api_secret": api_secret,"template_base64": f1_64,"template_rectangle": rectangle1,"merge_base64": f2_64,"merge_rectangle": rectangle2,"merge_rate": number}response = requests.post(url_add, data=data)req_con1 = response.content.decode('utf-8')req_dict = json.JSONDecoder().decode(req_con1)result = req_dict['result']imgdata = base64.b64decode(result)file = open(image_url, 'wb')file.write(imgdata)file.close()# 思聰圖 image1 = r"C:\Users\xx\Downloads\tmp\pic/2.jpg" # 黃渤圖 image2 = r"C:\Users\xx\Downloads\tmp\pic/3.jpg" # 結(jié)果圖 image = r"C:\Users\xx\Downloads\tmp\pic/n.jpg"merge_face(image1, image2, image, 90)我用的思聰?shù)膱D片是這樣子的:
運(yùn)行程序,融合后的圖像是這樣的:
以上是針對一張圖片的處理,批量處理,只需要掃描目錄下的圖片,然后針對每一張進(jìn)行處理即可。
后記
我在批量處理的時候,加了一個步驟就是刪除原來的圖片,使得目錄下的圖片全部變得不可描述。
女朋友剛洗完澡,我差不多收工。她還夸我真棒,電腦速度有明顯的提升。
不知道哪天她偷偷打開那個神秘的文件夾,雙擊圖片,看到呈現(xiàn)出來的圖片時,會是什么反應(yīng)?我心里有點(diǎn)迫不及待的期待,嘿嘿!
感謝每一位愿意讀完我文章的人,對于新媒體創(chuàng)作我也是一個剛?cè)腴T的,也在不斷學(xué)習(xí)中。 創(chuàng)作是一件非常值得持續(xù)投入的事情,因?yàn)槟銈兠恳淮蔚闹С侄际菍ξ覙O大的肯定!
為了方便想學(xué)python的小伙伴們,我建了一個交流群,里面上傳了很多python的學(xué)習(xí)資料,有需要的小伙伴進(jìn)群免費(fèi)獲取哦。
總結(jié)
以上是生活随笔為你收集整理的女友电脑私存思聪帅照,我用python偷梁换柱...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php判断中文字符长度,JavaScri
- 下一篇: 5800计算器公路三维全能程序