您的位置:首页技术文章
文章详情页

Python实现AI换脸功能

【字号: 日期:2022-07-30 13:29:23浏览:3作者:猪猪

需要用到的接口:

获取人脸信息的接口: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 编程
相关文章: