【Unity3d】在Unity3d中使用百度AI人脸识别功能

百度AI开放平台是百度推出的一个人工智能服务平台,该平台提供了很多当下热门技术的解决方案,如人脸识别,语音识别,语音智能等。其中人脸识别的SDK支持很多语言,包括Java,PHP,Python,C#,Node.js,和iOS等,使用C#进行脚本语言开发的自然也可以很方便的使用这些SKD。

1、下载人脸识别SDK

首先我们需要下载最新版的SDK,打开人脸识别SDK下载页面,选择C# SDK下载: 

下载解压后得到一个叫aip-csharp-sdk-3.0.0的文件夹,其中AipSdk.dll提供了我们进行人脸识别开发需要的API,AipSdk.XML是对DLL的注释。thirdparty中包含了sdk的第三方依赖,Demo中是一些使用示例,可以进行参考。



2、导入SDK

由于SDK已经被打包成DLL文件,所以我们导入使用起来也十分方便,只需将解压后的文件夹直接导入到工程即可。当然为了方便管理我们可以将SDK导入到Plugins文件夹中,需要注意的是一定要讲第三方依赖一起导入不然会报错。 

导入后可能会有如下错误: 

这是由于我们在Player设置中选择的Api Compatibility Level是.Net 2.0 Subset,即.Net 2.0的子集,这里需要改成.Net 2.0。选择Edit->Project Settings->Player,在Other Settings中将Api Compatibility Level更改为.Net 2.0: 


3、创建应用
下面将以人脸检测为示例简单介绍一下SDK的使用。 
使用SDK前我们需要先注册一个百度账号,然后登陆百度AI开放平台,创建一个人脸识别应用。 
选择控制台并登录: 


然后点击创建应用,输入应用名,应用类型,接口选择(默认创建人脸识别的应用),和应用描述,点击立即创建,创建完毕后点击查看应用详情查看API Key和Secret Key(点击显示查看) 



之后可以选择监控报表来查看应用接口调用情况:


4、接口调用
百度AI开放平台提供了人脸识别C#版的详细技术文档,下面以实例来进行简单的调用说明。 
使用人脸检测功能我们添加Baidu.Aip.Face命名空间,定义一个Face变量用于调用API:

[C#]  纯文本查看  复制代码
?
 
1
2
3
4
using Baidu.Aip.Face;
 
private Face client;
 
client = new Face( "API Key" , "Secret Key" )

实例化Face变量时需要填写我们创建的应用的API Key和Secret Key,可以在应用详情中查看。 
进行人脸检测时调用FaceDetect方法:

[C#]  纯文本查看  复制代码
?
 
public JObject FaceDetect( byte [] image, Dictionary< string , object > options = null );

该方法需要传入两个参数,被检测的图片和返回的参数配置,其中可选参数options可以使用默认值null,这时只会返回人脸的位置等基本信息。返回值是一个JObject类型,此类型是第三方依赖中提供的一个json类型。详细调用方法为:
[C#]  纯文本查看  复制代码
?
 
1
2
3
4
5
byte [] image = File.ReadAllBytes(Application.streamingAssetsPath + "/1.jpg" );
Dictionary< string , object > options = new Dictionary< string , object >()
{
     { "face_fields" , "beauty,age,expression,gender" }
};
client.FaceDetect(image, options);

options中的face_fields为请求的参数,类型是string,多个项以逗号分开,不能加在逗号和后一项之间加空格,否则无效。详细参数如下图  
方法返回的JObject包含一个或多个人脸的信息,也可以如下调用:

[C#]  纯文本查看  复制代码
?
 
client.FaceDetect(image);


此时将只会返回最基本的信息,包括日志id,人脸数目,人脸位置,人脸置信度,竖直方向转角,三维左右旋转角,三维俯仰角,平面旋转角。 
所有返回值见下图:



运行时可能会报错: 

这是网页端身份安全验证失败导致的,我们需要在程序运行时手动添加安全证书,在Awake方法中加入:
[C#]  纯文本查看  复制代码
?
 
1
2
3
4
5
6
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
                delegate ( object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
                            System.Security.Cryptography.X509Certificates.X509Chain chain,
                            System.Net.Security.SslPolicyErrors sslPolicyErrors)
                 {
                    return true ; // **** Always accept
                 };


我们可以用Text控件来查看具体的返回值: 
TestFace.cs:
[C#]  纯文本查看  复制代码
?
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System.Collections.Generic;
using System.IO;
using Baidu.Aip.Face;
using UnityEngine;
using UnityEngine.UI;
 
public class TestFace : MonoBehaviour
{
 
     public Text debugInfo;
 
     private Face client;
     private byte [] image;
     private Dictionary< string , object > options;
 
     private void Awake()
     {
         System.Net.ServicePointManager.ServerCertificateValidationCallback +=
                delegate ( object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
                            System.Security.Cryptography.X509Certificates.X509Chain chain,
                            System.Net.Security.SslPolicyErrors sslPolicyErrors)
                {
                    return true ; // **** Always accept
             };
 
         client = new Face( "API Key" , "Secret Key" );
         image = File.ReadAllBytes(Application.streamingAssetsPath + "/1.jpg" );
         options = new Dictionary< string , object >()
         {
             { "face_fields" , "beauty,age,expression,gender" }
         };
     }
 
     public void StartDetect()
     {
         var result = client.FaceDetect(image); //, options);
         debugInfo.text = result.ToString();
     }
}


运行结果: 

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Spring Boot项目使用百度AI的车牌识别功能,可以通过调用百度AI提供的RESTful API来实现。下面是一个示例代码,可以帮助你完成在Spring Boot项目调用百度AI车牌识别功能: 1. 引入依赖 在pom.xml文件添加以下依赖: ```xml <dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.15.3</version> </dependency> ``` 2. 创建配置类 在Spring Boot项目创建一个配置类,用于初始化百度AI的相关配置信息,如API Key、Secret Key等。代码如下: ```java @Configuration public class BaiduAIConfig { @Value("${baidu.ai.app-id}") private String appId; @Value("${baidu.ai.api-key}") private String apiKey; @Value("${baidu.ai.secret-key}") private String secretKey; @Bean public AipOcr aipOcr() { // 初始化AipOcr AipOcr aipOcr = new AipOcr(appId, apiKey, secretKey); // 设置连接超时时间和读取超时时间 aipOcr.setConnectionTimeoutInMillis(2000); aipOcr.setSocketTimeoutInMillis(60000); return aipOcr; } } ``` 在上面的代码,我们使用了@Configuration注解来将该类声明为Spring的配置类,使用@Value注解来注入配置文件的API Key、Secret Key等信息。我们创建了一个名为aipOcr的Bean,用于初始化AipOcr对象。使用setConnectionTimeoutInMillis()和setSocketTimeoutInMillis()方法设置了连接超时时间和读取超时时间。 3. 创建Controller 在Spring Boot项目创建一个Controller,用于接收上传的图片,并调用百度AI的车牌识别API进行识别。代码如下: ```java @RestController @RequestMapping("/car") public class CarPlateController { @Autowired private AipOcr aipOcr; @PostMapping("/plate") public String carPlateRecognition(@RequestParam("image") MultipartFile image) throws Exception { // 车牌识别 byte[] bytes = image.getBytes(); HashMap<String, String> options = new HashMap<>(); JSONObject result = aipOcr.licensePlate(bytes, options); if (result != null && result.has("words_result")) { JSONObject wordsResult = result.getJSONObject("words_result"); String number = wordsResult.getString("number"); return "车牌号码:" + number; } else { return "识别失败"; } } } ``` 在上面的代码,我们使用了@RestController注解来声明该类为一个RESTful风格的Controller,使用@Autowired注解来注入AipOcr对象。我们创建了一个名为carPlateRecognition的方法,用于接收上传的图片,并调用百度AI的车牌识别API进行识别。我们使用MultipartFile对象来接收上传的图片,使用licensePlate()方法调用百度AI的车牌识别API,最后解析结果得到车牌号码。 4. 测试 在浏览器或Postman等工具发送POST请求,请求路径为/car/plate,上传一张包含车牌的图片,即可测试百度AI的车牌识别功能

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值