python调用百度api实现人脸融合(代码片段)

ZHW_AI课题组 ZHW_AI课题组     2023-03-09     608

关键词:

目录

1.作者介绍

刘帅波,男,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:1461004501@qq.com

2.人脸融合介绍

简单来说就是对两张人脸进行融合处理,使生成的人脸同时具备两张人脸的外貌特征。这是百度智能云官网平台给出的在线测试页面,支持四种图片格式,且要求图片大小不超过2M。

3.调用百度智能云API

如何创建应用接口步骤如下,按照箭头提示依次点击即可
步骤一:

步骤二:

步骤三:

4.代码解析

4.1 导入库

import requests         # 可以用来生成一个网络请求,抓取网络信息即用来调用百度云的接口
import base64           # 将图片信息采用Base64编码
import json             # 是一种轻量级的数据交换格式

4.2 获取token

# 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相当于访问百度云人脸融合接口时服务端发放给你的“访问许可”

4.3 读取图片,转换编码

# 根据图片名读取图片,并转换成base64
def read_photo(name):
    with open('%s' % name, 'rb') as f:
        base64_data = base64.b64encode(f.read())
        bd = base64_data.decode()
        return bd

此处属于固定函数模型

4.4 调用百度智能云接口实现图片融合

# 调用百度的接口,实现融合图片
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实现人脸图像融合

4.5 下载融合图片

# 下载融合后图片
def down_photo(data):
    imagedata = base64.b64decode(data)
    file = open('D:\\\\研一任务\\\\课程作业\\\\人工智能高级语言程序设计\\\\result.jpg', "wb")
    # 融合图片保存路径,'wb':以二进制格式打开一个文件只用于写入,文件存在则覆盖,若不存在创建新文件
    file.write(imagedata)

注意此处的保存路径名称,避免出现“\\n”,“\\r”等形式,造成路径无法读取错误

4.6 运行主程序

# 主程序
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,运行主程序便可获得人脸融合图像结果(注意:应当选择正面无遮挡的清晰人脸照片,否则会出现检测不到人脸的提示)

4.7 融合结果展示

5. 完整代码

'''
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, 胡歌, 赵丽颖)

python调用腾讯api实现人脸检测(代码片段)

Python调用腾讯API实现人脸检测1.作者介绍1.腾讯云人脸检测API2.调用API过程1、根据接口文档直接调用2、SDK调用(1)代码解析(2)完整代码(3)运行结果3.拓展实验4.问题与分析1.作者介绍张玉,女,... 查看详情

python调用华为api实现人脸比对(代码片段)

目录1.作者介绍2.背景及访问流程介绍2.1人脸识别服务介绍2.2华为人脸服务2.3华为API访问流程2.4构建HTTPS协议2.5人脸识别限制要求3.关于实验代码、实验过程、测试结果3.1Token获取代码3.2调用人脸比对算法API3.3结果输出3.4... 查看详情

python调用华为api实现人脸检测(代码片段)

目录1.作者介绍2.华为人脸检测API2.1人脸检测2.2约束限制3.实验过程3.1获取API3.2代码实现3.3运行结果1.作者介绍任瑞斌,男,西安工程大学电子信息学院,2021级研究生研究方向:机器视觉与人工智能电子邮件:14... 查看详情

基于python的百度ai人脸识别api接口(可用于opencv-python人脸识别)(代码片段)

基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)资源:https://download.csdn.net/download/weixin_53403301/43644312之前的项目:【最新】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别... 查看详情

javacv实现图片中人脸检测完整代码教程(代码片段)

...f0c;群友问道有没有能让人脸露牙齿的接口,我记得想百度阿里的都应该有类似人脸识别,分析、融合的api,但是我百度了一下,确实没有找到,可能他们提供的都是最基础的接口,如果想实现自己的想要的某种... 查看详情

javacv实现图片中人脸检测完整代码教程(代码片段)

...f0c;群友问道有没有能让人脸露牙齿的接口,我记得想百度阿里的都应该有类似人脸识别,分析、融合的api,但是我百度了一下,确实没有找到,可能他们提供的都是最基础的接口,如果想实现自己的想要的某种... 查看详情

python调用百度ai对颜值评分(代码片段)

...杨紫的图片为例进行年龄、性别、颜值的识别。  具体python代码如下:‍importosimportbase64fromaipimportAipFaceos.chdir(r'F:\\公众号\\28.人脸识别')#设置图片存放的路径pictureName='1_yz.jpg'defget_picture_content(pictureName):withope... 查看详情

基于python的人脸互换系统设计与实现(代码片段)

数据可视化FinalProject目录数据可视化FinalProject1项目介绍11.1.人脸互换(faceswap)21.2人脸融合(facemorph)21.3本征脸(eigenface)2算法结构与处理过程22.1人脸变换22.1.1人脸关键点检测22.1.2计算凸包32.1.3德劳内&#x... 查看详情

python丨调用百度的人脸识别api给你的颜值打个分

需要用到的工具百度的人脸识别apiFlaskPILrequests主要思路利用的百度的人脸识别库,然后自己做了一个简单的图片上传和图片处理以及信息提取加工。官网给的方法相对比较繁琐,我使用request改写了一下如下(注意把url里面的Key换... 查看详情

借助百度云api进行人脸识别(代码片段)

前言:本篇博客是笔者第一次使用百度云api进行人脸检测,主要内容包括两部分,一是获取接口,二是借助接口进行人脸检测,最终可以给出一个百分比判别两张人脸是否属于同一个人。笔者也是初步了解这方面的内容,也是参... 查看详情

基于javaweb人脸识别注册登录系统(代码片段)

...隐私方面人们对大数据时代的误解。不多废话,下面通过调用百度api来实现人脸注册及登录,Web端人脸识别 查看详情

python调用百度ai实现文字识别(代码片段)

...那就是免费调用百度AI实现图片上面的文字识别。相对于Python的第三方库,百度人工智能要更强大,毕竟人工智能不是那么容易搞的。要调用,其实很简单,关键的代码只需要三行。但需要先注册百度AI,获得ID和密钥。注册也很... 查看详情

python调用腾讯api进行人脸身份证比对(代码片段)

Python调用腾讯API进行人脸身份证比对1.作者介绍2.人脸身份证比对介绍2.1应用场景3.代码调试3.1实验过程3.2编辑参数3.3查看API并复制进程序3.4完整代码3.5运行结果1.作者介绍钱文浩,男,西安工程大学电子信息学院ÿ... 查看详情

opencv图像融合(给人脸添加一个眼镜)(代码片段)

基于dlib68点人脸检测的小功能实现图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般1importnumpyasnp2importcv2ascv3importdlib4importmath56#做一个戴眼镜的滤镜效果78detector=dlib.get_frontal_face_detector()9pr... 查看详情

python有道,腾讯,谷歌,百度四大翻译api聚合接口[蟒实现](代码片段)

查看详情

调用百度api实现人像动漫化(c++)(代码片段)

作者:Steven版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处准备工作    1)登录网站:人像动漫化-百度AI开放平台 。登录百度AI平台。图1 登录百度AI平台    2&#x... 查看详情

人脸识别(代码片段)

...1、创建一个人脸的集合FaceSet,用于存储人脸标识face_token调用face++的url:https://api-cn.faceplusplus.com/facepp/v3/faceset/cr 查看详情

调用百度地图api实现连线高铁线路的调用示例(代码片段)

先做好了网站的后台,编辑高铁站、高铁线路,然后编辑每条线路将线路上的高铁站添加进去并控制排序,这样前端上就能一下子拉出所有的高铁线路以及这条线路上的所有高铁站点,当然编辑高铁站点时有一个... 查看详情