Unity 接入百度AI - 人像动漫化
2023-09-27 14:19:52 时间
接口介绍:
运用对抗生成网络技术,结合人脸检测、头发分割、人像分割等技术,为用户量身定制千人千面的二次元动漫形象,并支持通过参数设置,生成二次元动漫人像。
创建应用:
在产品服务中搜索图像增强与特效,创建应用,获取AppID、APIKey、SecretKey信息:
查阅官方文档,以下是人像动漫画接口返回数据参数详情:
定义数据结构:
using System;
/// <summary>
/// 人像动漫化接口响应数据结构
/// </summary>
[Serializable]
public class AnimeResponse
{
/// <summary>
/// 唯一的log id,用于问题定位
/// </summary>
public int log_id;
/// <summary>
/// 处理后图片的Base64编码
/// </summary>
public string image;
}
下载C# SDK:
下载完成后将AipSdk.dll动态库导入到Unity中:
以下是调用接口时传入的参数详情:
封装调用函数:
using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 人像动漫化
/// </summary>
public class Anime
{
//以下信息于百度开发者中心控制台创建应用获取
private const string appID = "";
private const string apiKey = "";
private const string secretKey = "";
/// <summary>
/// 发起人像动漫画请求
/// </summary>
/// <param name="bytes">图片字节数据</param>
/// <param name="withMask">是否带口罩</param>
/// <param name="maskID">口罩ID 取值范围1-8</param>
/// <returns>返回的动漫画图片字节数据</returns>
public static byte[] SendRequest(byte[] bytes, bool withMask = false, int maskID = 1)
{
var client = new Baidu.Aip.ImageProcess.ImageProcess(apiKey, secretKey);
try
{
var options = new Dictionary<string, object>
{
{ "type", withMask ? "anime_mask" : "anime" },
{ "mask_id", Mathf.Clamp(maskID, 1, 8) }
};
var response = client.SelfieAnime(bytes, options);
AnimeResponse animeResponse = JsonUtility.FromJson<AnimeResponse>(response.ToString());
byte[] buffer = Convert.FromBase64String(animeResponse.image);
return buffer;
}
catch(Exception error)
{
Debug.LogError(error);
}
return null;
}
/// <summary>
/// 发起人像动漫画请求
/// </summary>
/// <param name="url">图片url地址</param>
/// <param name="withMask">是否带口罩</param>
/// <param name="maskID">口罩ID 取值范围1-8</param>
/// <returns>返回的动漫画图片字节数据</returns>
public static byte[] SendRequest(string url, bool withMask = false, int maskID = 1)
{
var client = new Baidu.Aip.ImageProcess.ImageProcess(apiKey, secretKey);
try
{
var options = new Dictionary<string, object>
{
{ "type", withMask ? "anime_mask" : "anime" },
{ "mask_id", Mathf.Clamp(maskID, 1, 8) }
};
var response = client.SelfieAnimeUrl(url, options);
AnimeResponse animeResponse = JsonUtility.FromJson<AnimeResponse>(response.ToString());
byte[] buffer = Convert.FromBase64String(animeResponse.image);
return buffer;
}
catch (Exception error)
{
Debug.LogError(error);
}
return null;
}
}
测试图片:
using System.IO;
using UnityEngine;
public class Example : MonoBehaviour
{
private void Start()
{
//读取图片字节数据 发起请求
var bytes = Anime.SendRequest(File.ReadAllBytes(Application.dataPath + "/Picture.jpg"));
//根据返回的字节数据生成图片
File.WriteAllBytes(Application.dataPath + "/Test.png", bytes);
}
}
下面是生成的图片:
相关文章
- js 定位当前城市(ip,省份,城市,邮编)接口定位(搜狐、新浪、百度、腾讯API)
- 我做的百度飞桨PaddleOCR .NET调用库 我做的百度飞桨PaddleOCR .NET调用库
- 下载过慢的时候,想办法google或者去百度等其他平台寻找公开数据集
- 百度地图的覆盖物在手机上无法点击
- 第十六届全国大学生智能汽车竞赛创意组-百度智慧交通
- 百度攻城狮训练营2021-工程能力study2 -- 2.1 代码的艺术 脑图整理
- 百度攻城狮训练营2021-工程能力study1 -- 1.3 研发工具链介绍 脑图整理
- 百度飞浆AI Studio 学习之路 - 人工智能概述与入门基础
- 百度校园招聘-研发工程师笔试
- 百度面试——AI算法岗
- “百度回收站”颠覆收废品行业
- 百度2014校园招聘笔试题武汉站三道算法设计题
- Jquery Mobile 百度地图 Demo
- 百度AI技术QQ群
- (数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换
- 【百度地图】百度地图的使用方法 和 在vue中如何使用百度地图(超详细)
- GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)(转载)
- 百度地图(35)-GL 地址解析
- 百度搜索框搜索时显示或者隐藏历史搜索记录