您的位置:首頁技術文章
文章詳情頁

Python實現AI換臉功能

瀏覽:6日期:2022-07-30 13:29:23

需要用到的接口:

獲取人臉信息的接口:https://api-cn.faceplusplus.com/facepp/v3/detect

實現換臉的接口 :https://api-cn.faceplusplus.com/imagepp/v1/mergeface

代碼分為三步

代碼:

import requestsimport jsonimport simplejsonimport base64#第一步:獲取人臉關鍵點def find_face(imgpath): ''' :param imgpath: 圖片的地址 :return: 一個字典類型的人臉關鍵點 如:{’top’: 156, ’left’: 108, ’width’: 184, ’height’: 184} ''' http_url = ’https://api-cn.faceplusplus.com/facepp/v3/detect’ #獲取人臉信息的接口 data = { 'api_key':'x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU',#訪問url所需要的參數 'api_secret':'OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7',#訪問url所需要的參數 'image_url':imgpath, #圖片地址 'return_landmark':1 } files = {’image_file’:open(imgpath,’rb’)} #定義一個字典存放圖片的地址 response = requests.post(http_url,data=data,files=files) res_con1 = response.content.decode(’utf-8’) res_json = simplejson.loads(res_con1) faces = res_json[’faces’] list = faces[0] rectangle = list[’face_rectangle’] return rectangle#第二步:實現換臉def merge_face(image_url1,image_url2,image_url,number): ''' :param image_url1: 被換臉的圖片路徑 :param image_url2: 換臉的圖片路徑 :param image_url: 換臉后生成圖片所保存的路徑 :param number: 換臉的相似度 ''' #首先獲取兩張圖片的人臉關鍵點 face1 = find_face(image_url1) face2 = find_face(image_url2) #將人臉轉換為字符串的格式 rectangle1 = str(str(face1[’top’]) + ',' + str(face1[’left’]) + ',' + str(face1[’width’]) + ',' + str(face1[’height’])) rectangle2 = str(str(face2[’top’]) + ',' + str(face2[’left’]) + ',' + str(face2[’width’]) + ',' + str(face2[’height’])) #讀取兩張圖片 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() url_add = ’https://api-cn.faceplusplus.com/imagepp/v1/mergeface’ #實現換臉的接口 data={ 'api_key': 'x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU', 'api_secret': 'OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7', 'template_base64':f1_64, 'template_rectangle':rectangle1, 'merge_base64':f2_64, 'merge_rectangle':rectangle2, 'merge_rate':number } response1 = requests.post(url_add,data=data) res_con1 = response1.content.decode(’utf-8’) res_dict = json.JSONDecoder().decode(res_con1) result = res_dict[’result’] imgdata = base64.b64decode(result) file=open(image_url,’wb’) file.write(imgdata) file.close()if __name__ == ’__main__’: image1 = r'meizi1.jpg' image2 = r'meizi.jpg' image3 = r'face1.jpg' merge_face(image1,image2,image3,100)

效果:

換臉前

Python實現AI換臉功能

要換的臉:

Python實現AI換臉功能

換臉后:

Python實現AI換臉功能

總結

到此這篇關于Python實現AI換臉的代碼的文章就介紹到這了,更多相關Python實現AI換臉內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
国产综合久久一区二区三区