Face++融合时融合是整体的 例如你戴眼镜 模板图不带眼睛 融合后就是戴眼镜的 融合上传的图片可以是文件流也可以是Base64

     private const string KEY = "XP9kdJPbF-4UugXEDr*********R";private const string SECRET = "T5mccUDL6GHc-gR**********";private const string URL = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface";Dictionary<string, object> verifyPostParameters = new Dictionary<string, object>();verifyPostParameters.Add("api_key", KEY);verifyPostParameters.Add("api_secret", SECRET);//添加模板图片参数verifyPostParameters.Add("template_file", new HttpHelper4MultipartForm.FileParameter(Texture2DToBytes(template), "1.jpg", "application/octet-stream"));//   verifyPostParameters.Add("template_file",base64);//添加合并图片参数verifyPostParameters.Add("merge_file", new HttpHelper4MultipartForm.FileParameter(Texture2DToBytes(merget), "2.jpg", "application/octet-stream"));//   verifyPostParameters.Add(""merge_file"",base64);//添加融合比例参数merge_rate = gameManager.config.mergeRate;verifyPostParameters.Add("merge_rate", merge_rate.ToString());//添加五官融合比例feature_rate = gameManager.config.featureRate;verifyPostParameters.Add("feature_rate", feature_rate.ToString());HttpWebResponse verifyResponse = HttpHelper4MultipartForm.MultipartFormDataPost(URL, "", verifyPostParameters);using (StreamReader reader = new StreamReader(verifyResponse.GetResponseStream(), System.Text.Encoding.UTF8)){//返回值处理A a = JsonUtility.FromJson<A>(reader.ReadToEnd());Debug.Log(a.time_used);byte[] b;Texture2D temp;if (string.IsNullOrEmpty(a.result)){//如果返回的纹理是null,则使用模版纹理temp = template;Debug.Log("没有检测到人,使用模版纹理。");}else{//如果返回的纹理非null,则使用返回纹理b = Convert.FromBase64String(a.result);temp = new Texture2D(0, 0);temp.LoadImage(b);temp.Apply();Debug.Log("检测到人,使用返回纹理。");}}

中间使用了HttpHelper4MultipartForm函数

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading;namespace MgLiveCOM_Eyes
{public static class HttpHelper4MultipartForm{public class FileParameter{public byte[] File{get;set;}public string FileName{get;set;}public string ContentType{get;set;}public FileParameter(byte[] file) : this(file, null){}public FileParameter(byte[] file, string filename) : this(file, filename, null){}public FileParameter(byte[] file, string filename, string contenttype){this.File = file;this.FileName = filename;this.ContentType = contenttype;}}private static readonly Encoding encoding = Encoding.UTF8;/// <summary>/// MultipartForm请求/// </summary>/// <param name="postUrl">服务地址</param>/// <param name="userAgent"></param>/// <param name="postParameters">参数</param>/// <returns></returns>public static HttpWebResponse MultipartFormDataPost(string postUrl, string userAgent, Dictionary<string, object> postParameters){string text = string.Format("----------{0:N}", Guid.NewGuid());string contentType = "multipart/form-data; boundary=" + text;//multipart类型byte[] multipartFormData = HttpHelper4MultipartForm.GetMultipartFormData(postParameters, text);return HttpHelper4MultipartForm.PostForm(postUrl, userAgent, contentType, multipartFormData);}private static HttpWebResponse PostForm(string postUrl, string userAgent, string contentType, byte[] formData){HttpWebRequest httpWebRequest = WebRequest.Create(postUrl) as HttpWebRequest;if (httpWebRequest == null){throw new NullReferenceException("request is not a http request");}httpWebRequest.Method = "POST";//post方式httpWebRequest.SendChunked = false;httpWebRequest.KeepAlive = true;httpWebRequest.Proxy = null;httpWebRequest.Timeout = Timeout.Infinite;httpWebRequest.ReadWriteTimeout = Timeout.Infinite;httpWebRequest.AllowWriteStreamBuffering = false;httpWebRequest.ProtocolVersion = HttpVersion.Version11;httpWebRequest.ContentType = contentType;httpWebRequest.CookieContainer = new CookieContainer();httpWebRequest.ContentLength = (long)formData.Length;try{using (Stream requestStream = httpWebRequest.GetRequestStream()){int bufferSize = 4096;int position = 0;while (position < formData.Length){bufferSize = Math.Min(bufferSize, formData.Length - position);byte[] data = new byte[bufferSize];Array.Copy(formData, position, data, 0, bufferSize);requestStream.Write(data, 0, data.Length);position += data.Length;}requestStream.Close();}}catch (Exception ex){return null;}HttpWebResponse result;try{result = (httpWebRequest.GetResponse() as HttpWebResponse);}catch (WebException arg_9C_0){result = (arg_9C_0.Response as HttpWebResponse);}return result;}public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors){return true;}/// <summary>/// 从表单中获取数据/// </summary>/// <param name="postParameters"></param>/// <param name="boundary"></param>/// <returns></returns>private static byte[] GetMultipartFormData(Dictionary<string, object> postParameters, string boundary){Stream stream = new MemoryStream();bool flag = false;foreach (KeyValuePair<string, object> current in postParameters){if (flag){stream.Write(HttpHelper4MultipartForm.encoding.GetBytes("\r\n"), 0, HttpHelper4MultipartForm.encoding.GetByteCount("\r\n"));}flag = true;if (current.Value is HttpHelper4MultipartForm.FileParameter){HttpHelper4MultipartForm.FileParameter fileParameter = (HttpHelper4MultipartForm.FileParameter)current.Value;string s = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n", new object[]{boundary,current.Key,fileParameter.FileName ?? current.Key,fileParameter.ContentType ?? "application/octet-stream"});stream.Write(HttpHelper4MultipartForm.encoding.GetBytes(s), 0, HttpHelper4MultipartForm.encoding.GetByteCount(s));stream.Write(fileParameter.File, 0, fileParameter.File.Length);}else{string s2 = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}", boundary, current.Key, current.Value);stream.Write(HttpHelper4MultipartForm.encoding.GetBytes(s2), 0, HttpHelper4MultipartForm.encoding.GetByteCount(s2));}}string s3 = "\r\n--" + boundary + "--\r\n";stream.Write(HttpHelper4MultipartForm.encoding.GetBytes(s3), 0, HttpHelper4MultipartForm.encoding.GetByteCount(s3));stream.Position = 0L;byte[] array = new byte[stream.Length];stream.Read(array, 0, array.Length);stream.Close();return array;}}
}

【无标题】unity人脸融合API Face++相关推荐

  1. 基于百度云人脸融合API的python实现视频人像换脸

    import os import cv2 import re import base64 import requests AK = 0        #输入你的AK SK = 0        #输入 ...

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

    本文主要介绍人脸融合API的调用使用攻略.这里只是调用测试,有的融合结果可能比较恐怖,希望不要拍砖. 一.平台接入 此步骤比较简单,不多阐述.可参照之前文档: https://ai.baidu.com ...

  3. Unity使用OpenCV插件实现人脸融合 —— 换脸换装示例

    Unity使用OpenCV插件实现人脸融合 案例说明 Unity版本以及必备插件 快速上手 核心(黑心)方法(脚本): 结束 案例说明 本章节针对部分网友提出的看不懂源码,拿到相关资料后这也报错,那也 ...

  4. unity使用百度AI实现人脸融合

    准备工作:前往百度AI网页注册账号,百度AI开放平台-全球领先的人工智能服务平台 在开放能力平台,能找到想要的功能介绍,然后要创建一个应用,需要用到ak和sk,百度AI开发里边介绍比较清楚,这里就不赘 ...

  5. C#调用Face++ API实现人脸融合

    文章目录 一.人脸融合原理 二.代码实现 1.注册账号 2.创建发送请求和反馈的类 3.实现融合 4.生成图片 引言: 随着AI人工智能的发展,物联网技术逐渐进入平常百姓家,而人脸融合技术更能体现AI ...

  6. 人脸融合java_java人脸融合

    java人脸融合 时间:2020-06-04 11:22:43  来源:  作者: JAVA人脸融合,基于javacv技术,将两张人脸进行深度融合,使用javacv识别人脸和获取人脸68个关键点. 介 ...

  7. 「云毕业照」刷爆朋友圈!AI人脸融合技术谁家强?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 2020,特殊的毕业季,需要特殊的纪念. 之前看过日本东京的BBT大学使用的「Newme」机器人代替学 ...

  8. python h5游戏_从零开始制作H5人脸融合小游戏

    去年的建军节,一个展示军装照的H5人脸融合游戏火遍朋友圈,带来很好的传播效果.最近欧冠决赛要来了,公司决定做一个寻找和你最像的欧冠球星的H5游戏,那么该怎么做呢?认真分析了一下,这个游戏其实用到的技术 ...

  9. C# 系统应用之无标题窗体移动的两种方法

    在做项目界面设计中,常常为了美观需要设置窗体属性"FormBorderStyle"(窗体边框和标题栏外观)为None无标题窗口.此时隐藏标题的窗口怎样实现移动呢?我根据自己的项目从 ...

最新文章

  1. java的重点是什么_你知道初学者学习Java的重点是什么吗?
  2. arcpy实现空间查询_布隆过滤!Python实现亿级数据集中元素快速查找
  3. 判断是否移动端设备的JS代码,超短,百度都用它
  4. 安徽池州贵池中学老师经典语录,我喷了
  5. Spring+Hibernate+SpringMVC+MySql实现配置多个数据源!
  6. idea怎么更改推到github的路径_IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版...
  7. Java 会是首选的最佳编程语言吗?
  8. 5复数与复变函数(五)
  9. 完整版linux下android源码下载、编译、模拟器启动运行
  10. oracle数据库课后报告,ORACLE数据库课程设计报告
  11. docker镜像存储在哪里
  12. 智慧职教云答案在哪里找_云课堂智慧职教答案哪里找
  13. 量子力学 计算机应用,有了九章计算机:但我们离量子力学还很远~
  14. 移动端300ms延迟_移动端300ms延迟的解决方法
  15. 苹果的破局几招:修漏洞、降价、官方认证翻新机……
  16. 使用Python对股票数据进行数据分析(一)-计算日线行情、5日均线、10日均线行情并显示
  17. Swift - 微信聊天群头像实现 (群聊的组合头像)
  18. benchmark java_Xudong
  19. StringTokenizer类的用法
  20. 诚之和:双11首战薇娅为什么输给了李佳琦?

热门文章

  1. 使用 markdown语法绘制流程图
  2. 【pymongo】连接认证 auth failed解决方法
  3. plecs仿真/四相交错并联PFC,非线性载波控制,无需采样输入电压,THD<1%
  4. java 方法重载 参数列表不同
  5. 学习 Python 之 Pandas库
  6. Extjs6 gridPanel排序与获取Store的排序信息
  7. excel2013导入SQL
  8. Java Web快速开发框架 ---- JSPX
  9. 肆拾肆- 微信小程序 canvas 解锁及弹簧物理效应动画
  10. 最大公约数gcd函数简介