使用阿里云API实现任一图片(人像)对头部进行图片分割,然后将分割后的图片与其他图片叠加,实现换头功能;(虽然越玩越坏,但也挡不住继续学习的心,写完这个继续捣鼓OpenCV);
1:获取摄像头图像,然后进行截图:
********此处为打开摄像头

    private WebCamTexture webCamTexture;//摄像头的内容 private UnityEngine.UI.RawImage showrawImage; void Start(){ //打开了摄像头WebCamDevice[] devices = WebCamTexture.devices;string deviceName = devices[0].name;webCamTexture = new WebCamTexture(deviceName, 400, 300);// GetComponent<Renderer>().material.mainTexture = webCamTexture;showrawImage.texture = webCamTexture;webCamTexture.Play();  }

*****这里获取截图

 //截图屏幕var texture = ScreenCapture.CaptureScreenshotAsTexture();

2:图片转换为Base64字符串;方法如下:

  /// <summary>/// 图片转换为Base64字符/// </summary>/// <param name="texture2D"></param>/// <returns></returns>public static string ImgToBase64String(Texture2D texture2D){byte[] buffer = GetBytesFromTexture(texture2D); string base64String = Convert.ToBase64String(buffer); return base64String;}/// <summary>/// 图片转换为byte数据/// </summary>/// <param name="texture2D"></param>/// <returns></returns>public static byte[] GetBytesFromTexture(Texture2D texture2D){RenderTexture renderTex = RenderTexture.GetTemporary(texture2D.width,texture2D.height,0,RenderTextureFormat.Default,RenderTextureReadWrite.Linear);Graphics.Blit(texture2D, renderTex);RenderTexture previous = RenderTexture.active;RenderTexture.active = renderTex;Texture2D readableText = new Texture2D(texture2D.width, texture2D.height);readableText.ReadPixels(new Rect(0, 0, renderTex.width, renderTex.height), 0, 0);readableText.Apply(); byte[] bytes = readableText.EncodeToJPG();return bytes; }

3:注册阿里云账户并登录,然后输入:头像自动分割(抠头像)进入到服务购买页面,现在是有免费套餐20次调用的机会,赶紧购买体验把(反正不要钱),这里是APICode查看地址。然后点击下面的API接口,根据自己的需求选择功能,这里选择:人体头部抠图返回透明背景,然后根据需求更改,这里使用UnityC#脚本更改如下:

 ALI_API_Result APIStart(){if (0 < querys.Length){url = url + "?" + querys;}if (host.Contains("https://")){ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));}else{httpRequest = (HttpWebRequest)WebRequest.Create(url);}httpRequest.Method = method;httpRequest.Headers.Add("Authorization", "APPCODE " + appcode);//根据API的要求,定义相对应的Content-TypehttpRequest.ContentType = "application/json; charset=UTF-8";if (0 < bodys.Length){byte[] data = Encoding.UTF8.GetBytes(bodys);using (Stream stream = httpRequest.GetRequestStream()){stream.Write(data, 0, data.Length);}}try{httpResponse = (HttpWebResponse)httpRequest.GetResponse();}catch (WebException ex){httpResponse = (HttpWebResponse)ex.Response;} Stream st = httpResponse.GetResponseStream();StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); string jsondata = reader.ReadToEnd();print(jsondata);ALI_API_Result aLI_API_Result = JsonConvert.DeserializeObject<ALI_API_Result>(jsondata);return aLI_API_Result;}public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors){return true;}

************根据阿里云API需要的Json对象进行封装

public class ALI_AI_API
{public string type;  //#图片类型,目前支持\"jpg\"和\"png\"两种类型public string photo;//\"图片数据BASE64编码\"public ALI_AI_API(string typePhoto,string photoBASE64) {type=typePhoto;photo=photoBASE64;}
}
public class ALI_API_Result
{public int status;public float time; public string errmsg;public string error;public ALI_API_PhotoData data;
}
public class ALI_API_PhotoData
{public string result;public float[] size;
}

4:然后就是根据获取的图片进行API请求然后接收返回数据进行显示:

    /// <summary>/// 直接调用或者按钮监听/// </summary>private void GetRequestAli_Api() {var texture = ScreenCapture.CaptureScreenshotAsTexture();ALI_AI_API = new ALI_AI_API("png", GameUtils.ImgToBase64String(texture));// ALI_AI_API = new ALI_AI_API("png", GameUtils.ImgToBase64String(imagurl1));//转换为Base64字符串bodys = JsonConvert.SerializeObject(ALI_AI_API);//获取阿里云结果ALI_API_Result aLI_API_Result = APIStart();if (aLI_API_Result != null && aLI_API_Result.status == 0){//showImage自己定义一个Image组件  public UnityEngine.UI.Image showImage;StartCoroutine(DownloadImage(aLI_API_Result.data.result, showImage));}}/// <summary>/// 获取图片/// </summary>/// <param name="url"></param>/// <param name="showImage"></param>/// <returns></returns>IEnumerator DownloadImage(string url, UnityEngine.UI.Image showImage){UnityEngine.Networking.UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);yield return www.SendWebRequest();if (www.isNetworkError || www.isHttpError){Debug.Log(www.error);}else{Texture2D myTexture = ((DownloadHandlerTexture)www.downloadHandler).texture;Sprite  sprite = Sprite.Create(myTexture, new Rect(0, 0, myTexture.width, myTexture.height), new Vector2(0, 0));showImage.sprite = sprite;showImage.SetNativeSize();}} /// <summary>/// 复制的阿里云API更改了一下/// </summary>/// <returns></returns>ALI_API_Result APIStart(){if (0 < querys.Length){url = url + "?" + querys;}if (host.Contains("https://")){ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));}else{httpRequest = (HttpWebRequest)WebRequest.Create(url);}httpRequest.Method = method;httpRequest.Headers.Add("Authorization", "APPCODE " + appcode);//根据API的要求,定义相对应的Content-TypehttpRequest.ContentType = "application/json; charset=UTF-8";if (0 < bodys.Length){byte[] data = Encoding.UTF8.GetBytes(bodys);using (Stream stream = httpRequest.GetRequestStream()){stream.Write(data, 0, data.Length);}}try{httpResponse = (HttpWebResponse)httpRequest.GetResponse();}catch (WebException ex){httpResponse = (HttpWebResponse)ex.Response;} Stream st = httpResponse.GetResponseStream();StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); string jsondata = reader.ReadToEnd();print(jsondata);ALI_API_Result aLI_API_Result = JsonConvert.DeserializeObject<ALI_API_Result>(jsondata);return aLI_API_Result;}public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors){return true;}

效果就是扣去相片中的头部不含颈部图片。。。之前上传了图片,被识别为违规。。。。。太坑了!!!

UnityC#接阿里云头像自动分割API相关推荐

  1. 使用阿里云短信服务API实现短信验证码以及短信服务通知

    使用阿里云短信服务API实现短信验证码以及短信服务通知 前言 一 .短信调用简要说明 二 .官方不带签名原生态测试demo 调用结果如下 三 .以上为不带模板和签名的API调用结果 下面加入签名和模板 ...

  2. 阿里达摩院自动驾驶负责人陈俊波离职,进军户外清洁机器人!

    来源:新智元 据雷峰网消息,原阿里达摩院自动驾驶负责人陈俊波(歌德)已离职创业. 消息称,他与前阿里机器人CEO谷祖琳.达摩院某团队负责人.浙大网新恒天VP王健共同创办了「有鹿智能」,进军户外清洁机器 ...

  3. 重磅开源人工智能纹理分割自动分割由参考纹理覆盖图像自监督学习

    重磅开源人工智能纹理分割自动分割由参考纹理覆盖图像自监督学习(特约点评:人工智能纹理分割自动分割由参考纹理覆盖图像自监督学习对于纹理分割提供了新的思路,这个创新点趣说人工智能必须推荐.来自网友小星的推 ...

  4. linux日志按照时间切割,Linux下把tomcat日志按日期自动分割

    Linux中tomcat日志分割需要用到cronolog 附上cronolog-1.6.2.tar.gz 1. 安装cronolog tar –zxvf cronolog-1.6.2.tar.gz . ...

  5. 【深度学习】一个应用—肝脏CT图像自动分割(术前评估)

    [深度学习]一个应用-肝脏CT图像自动分割(术前评估) 文章目录 1 目标 2 数据集 3 LITS20173.1 LiTS数据的预处理3.2 LiTS数据的读取3.3 数据增强3.4 数据存储 4 ...

  6. ML之API:国内外各大人工智能平台(百度云/华为云/阿里云/Face++等)及其API的简介、使用方法之详细攻略

    ML之API:国内外各大人工智能平台(百度云/华为云/阿里云/Face++等)及其API的简介.使用方法之详细攻略 目录 一.百度云api 1.api之CV 二.旷视科技(face++)api 1.a ...

  7. python的api库_python 利用toapi库自动生成api

    在学习做接口测试自动化的时候,我们往往会自己动手写一些简单的API,比如写一个简单的TODO API之类. 不过自己写API的时候经常需要造一些假数据,以及处理分页逻辑,开始的时候还觉得比较有意思,但 ...

  8. springboot 集成 swagger 自动生成API文档

    Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的前后端分离解决方案. S ...

  9. python生成api文档_Django 自动生成api接口文档教程

    最近在写测试平台,需要实现一个节点服务器的api,正好在用django,准备使用djangorestframework插件实现. 需求 实现一个接口,在调用时,通过传递的参数,直接运行对应项目的自动化 ...

最新文章

  1. 有个程序员老公有多爽???
  2. 深入理解 SVG 系列(一) —— SVG 基础
  3. linux下curl的使用
  4. ThhinkPHP5隐藏入口文件index.php
  5. SQL Server 2012 中的 Service Broker功能的一些改进或增强
  6. 航天金税 接口_用友凭证接口可以实现数据之间无缝对接和打通
  7. 第十一届蓝桥杯省赛 C++组试题 第2题 求完数
  8. Lighttpd1.4.20源码分析之etag.c(h) -------HTTP/1.1中的Etag域
  9. 使用SDE的一点体会
  10. Springer期刊参考文献格式如何用Latex生成
  11. 疯狂java 视频_疯狂Java讲义配书视频教程 下载
  12. directshow
  13. nod32 下载几账户翻译
  14. 国内HTML5前端开发框架汇总
  15. 创业公司的股权分配 .
  16. 用计算机弹音乐我们一起猫叫,抖音上面我们一起学猫叫一起喵喵喵是什么歌 抖音学猫叫歌曲歌词...
  17. Jetty in Win7
  18. mac电脑循环次数多少算新_2020年度最佳Mac端App新鲜出炉!今年,你发现了哪些好软件?...
  19. 测试实战-京东网站 + 禅道(七)
  20. 大华股份2013届校园招聘软件算法类试题D卷

热门文章

  1. ionic2混合应用调起原生地图应用
  2. 映驰科技发布域控DCU3.0,加速赋能L3跨域融合落地
  3. Presto 0.224个人笔记
  4. Lucene6.6.0 案例与学习路线
  5. 信息安全建设之安全平台搭建
  6. 教师网络计算机研修日志,网络研修日志范文(通用7篇)
  7. ElasticSearch 组合查询(must not_must should filter)
  8. 强推Linux高性能服务器编程, 真的是后端开发技术提升, 沉淀自身不容错过的一本经典书籍
  9. NC81 二叉搜索树的第k个结点
  10. ssm栾城五中的图书管理毕业设计源码171727