赞
踩
刘帅波,男,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:1461004501@qq.com
简单来说就是对两张人脸进行融合处理,使生成的人脸同时具备两张人脸的外貌特征。这是百度智能云官网平台给出的在线测试页面,支持四种图片格式,且要求图片大小不超过2M。
如何创建应用接口步骤如下,按照箭头提示依次点击即可
步骤一:
步骤二:
步骤三:
import requests # 可以用来生成一个网络请求,抓取网络信息即用来调用百度云的接口
import base64 # 将图片信息采用Base64编码
import json # 是一种轻量级的数据交换格式
# token获取
def get_token(client_id, client_secret):
# client_id为官网获取的API Key,client_secret为官网获取的Secret Key.下行client_id=后的马赛克为你的API Key,client_secret=后的马赛克为你的Secret Key
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=********&client_secret=*********"
response = requests.get(url)
resultJson = response.json()
return resultJson['access_token']
这里需要使用自己在百度智能云获取的API Key和Secret Key,token相当于访问百度云人脸融合接口时服务端发放给你的“访问许可”
# 根据图片名读取图片,并转换成base64
def read_photo(name):
with open('%s' % name, 'rb') as f:
base64_data = base64.b64encode(f.read())
bd = base64_data.decode()
return bd
此处属于固定函数模型
# 调用百度的接口,实现融合图片 def face_fusion(token, template, target): url = 'https://aip.baidubce.com/rest/2.0/face/v1/merge' request_url = url + '?access_token=' + token params = { "image_template": { # 将其中一张图片设置为模板(相当于底层图片) "image": template, "image_type": "BASE64", "quality_control": "NORMAL" }, "image_target": { # 将其中一张图片设置为目标(相当于人脸信息“叠加”到模板上) "image": target, "image_type": "BASE64", "quality_control": "NORMAL" }, "merge_degree": "HIGH" # 融合程度 } params = json.dumps(params) headers = {'content-type': 'application/json'} result = requests.post(request_url, data=params, headers=headers).json() # 经过调用百度云接口服务器返回的内容(融合结果) if result['error_code'] == 0: res = result["result"]["merge_image"] down_photo(res) else: print(str(result['error_code']) + result['error_msg'])
这里为核心部分,调用百度API实现人脸图像融合
# 下载融合后图片
def down_photo(data):
imagedata = base64.b64decode(data)
file = open('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\result.jpg', "wb")
# 融合图片保存路径,'wb':以二进制格式打开一个文件只用于写入,文件存在则覆盖,若不存在创建新文件
file.write(imagedata)
注意此处的保存路径名称,避免出现“\n”,“\r”等形式,造成路径无法读取错误
# 主程序
if __name__ == '__main__':
# 路径为自己的图片存储路径
胡歌 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\1.jpg') # 模板图片
赵丽颖 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\2.jpg') # 目标图片
token = get_token('*********', '**********') # 前者为API Key,后者改为Secret Key
face_fusion(token, 胡歌, 赵丽颖)
此处需要使用百度智能云获取的API Key和Secret Key,运行主程序便可获得人脸融合图像结果(注意:应当选择正面无遮挡的清晰人脸照片,否则会出现检测不到人脸的提示)
''' Author:LSB / 207 Date:2022年03月03日 ''' import requests # 可以用来生成一个网络请求,抓取网络信息即用来调用百度云的接口 import base64 # 将图片信息采用Base64编码 import json # 是一种轻量级的数据交换格式 # token获取 def get_token(client_id, client_secret): # client_id为官网获取的API Key,client_secret为官网获取的Secret Key.下行client_id=后的马赛克为你的API Key,client_secret=后的马赛克为你的Secret Key url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=***********&client_secret=************" # 注意此处的&符号 response = requests.get(url) resultJson = response.json() return resultJson['access_token'] # 根据图片名读取图片,并转换成base64 def read_photo(name): with open('%s' % name, 'rb') as f: base64_data = base64.b64encode(f.read()) bd = base64_data.decode() return bd # 调用百度的接口,实现融合图片 def face_fusion(token, template, target): url = 'https://aip.baidubce.com/rest/2.0/face/v1/merge' request_url = url + '?access_token=' + token params = { "image_template": { # 将其中一张图片设置为模板(相当于底层图片) "image": template, "image_type": "BASE64", "quality_control": "NORMAL" }, "image_target": { # 将其中一张图片设置为目标(相当于人脸信息“叠加”到模板上) "image": target, "image_type": "BASE64", "quality_control": "NORMAL" }, "merge_degree": "HIGH" # 融合程度 } params = json.dumps(params) headers = {'content-type': 'application/json'} result = requests.post(request_url, data=params, headers=headers).json() # 经过调用百度云接口服务器返回的内容(融合结果) if result['error_code'] == 0: res = result["result"]["merge_image"] down_photo(res) else: print(str(result['error_code']) + result['error_msg']) # 下载融合后图片 def down_photo(data): imagedata = base64.b64decode(data) file = open('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\result.jpg', "wb") # 融合图片保存路径,'wb':以二进制格式打开一个文件只用于写入,文件存在则覆盖,若不存在创建新文件 file.write(imagedata) # 主程序 if __name__ == '__main__': # 路径为自己的图片存储路径 胡歌 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\1.jpg') # 模板图片 赵丽颖 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\2.jpg') # 目标图片 token = get_token('*********', '**********') # 前者为API Key,后者改为Secret Key face_fusion(token, 胡歌, 赵丽颖)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。