详细功能及代码快速帮您接入百度大脑人脸融合

本文主要介绍人脸融合API的调用使用攻略。这里只是调用测试,有的融合结果可能比较恐怖,希望不要拍砖。

一.平台接入

此步骤比较简单,不多阐述。可参照之前文档:

https://ai.baidu.com/forum/topic/show/943028

二.分析接口文档

1.接口API

https://ai.baidu.com/docs#/Face-Merge/6720b55c

(1)接口描述

图像融合:将检测到的两张人脸图片进行融合,输出一张融合后的人脸。

(2)请求说明

需要用到的信息有:

请求URL:https://aip.baidubce.com/rest/2.0/face/v1/merge

Header格式:Content-Type:application/json

图片要求:

模板图(template_image),要求被融合的人脸边缘需要与图片边缘保持一定距离,保证被融合的人脸的的核心区域完全在图片中。

目标图无严格限制, 建议选择正脸、清晰的图像。

(3)返回示例

返回渲染图片的Base64编码,需要进行解码还原成图片。

{   

"error_code": 0, 

"error_msg": "SUCCESS",    

"log_id": 1234567890123,    

"timestamp": 1533094576,    

"cached": 0,    

"result":

           {         "merge_image": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAHqCAYAAADLb..."   

        } 

} 

2.获取access_token

#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id =【百度云应用的AK】
client_secret =【百度云应用的SK】

#获取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
if token_content:
token_info = json.loads(token_content.decode("utf-8"))
token_key = token_info['access_token']
return token_key

三.识别结果
模板图:
在这里插入图片描述
目标图:
在这里插入图片描述
融合图:
在这里插入图片描述
处理结果方面:可以看出,融合效果还是不错。

处理速度方面:处理时间1.64 s,可以接受。

四.源码共享

# -*- coding: utf-8 -*-

#!/usr/bin/env python



import urllib

import urllib.parse

import urllib.request

import json

import io

from PIL import Image

import base64



#client_id 为官网获取的AK, client_secret 为官网获取的SK

client_id = '*************************'

client_secret = '****************************'



#获取token

def get_token():

    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret

    request = urllib.request.Request(host)

    request.add_header('Content-Type', 'application/json; charset=UTF-8')

    response = urllib.request.urlopen(request)

    token_content = response.read()

    if token_content:

        token_info = json.loads(token_content.decode("utf-8"))

        token_key = token_info['access_token']

    return token_key



#获取人脸融合结果

def face_detect_url(image_template_url,image_target_url):

    request_url = "https://aip.baidubce.com/rest/2.0/face/v1/merge"

   

    params = dict()

    params['image_template'] = {"image": image_template_url,'image_type':'URL'}

    params['image_target'] = {"image": image_target_url,'image_type':'URL'}

    params['merge_degree']= 'HIGH'



    params = json.dumps(params).encode('utf-8')

   

    access_token=get_token()

    request_url = request_url + "?access_token=" + access_token

    request = urllib.request.Request(url=request_url, data=params)

    request.add_header('Content-Type', 'application/json')

    response = urllib.request.urlopen(request)

    content = response.read()

    if content:

        receipts = json.loads(content.decode("utf-8"))

        result = receipts['result']

        img_b64encode = result['merge_image']

#        print(img_b64encode)

        img_b64decode = base64.b64decode(img_b64encode)  # base64解码

        image = io.BytesIO(img_b64decode)

        img = Image.open(image)

        img.show()

        file=open('2.jpg','wb') 

        file.write(img_b64decode) 

        file.close() 

        print ('Success!')

        return content

    else:

        return ''



mage_template_url='http://dingyue.nosdn.127.net/JaftnDIuIbHgg97vQ8fDvHRWoWYgV8h=LFgrZXxW25oSy1541668286416compressflag.jpeg'

image_target_url='http://tx.haiqq.com/uploads/allimg/170503/0S3051605-0.jpg'

face_detect_url(image_template_url,image_target_url)

五.意见建议

目前对正面照片融合效果较好,如果模板照片和目标照片人物角度不一致,如有一方为侧脸,则融合效果不好,建议做相应完善处理。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值