日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

android调用百度活体检测接口,C#调用百度API实现活体检测的方法

發布時間:2024/9/19 C# 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android调用百度活体检测接口,C#调用百度API实现活体检测的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

活體檢測有多種情形,本文所指:從攝像頭獲取的影像中判斷是活體,還是使用了相片等靜態圖片。

場景描述

用戶個人信息中上傳了近照,當用戶經過攝像頭時進行身份識別。

此時,如果單純的使用攝像頭獲取的影像進行人臉相似度比對,則舉一張合適的相片對準攝像頭也是可以通過的。于是檢測攝像頭前影像是否為活體的需求就產生了。

解決方案

第一步,申請百度應用

點擊“立即使用”,登錄后“創建應用”,可以得到 API Key 與 Secret Key 等信息。

第二步,使用 API 進行活體檢測

這里的場景比較簡單,攝像頭獲取的影像可以保存為圖片,則功能接口可以這樣定義:給定圖片(這里使用URL),判斷其活體影像的概率。根據百度建議,概率設置為 99.5%,即達到此值或以上認為活體檢測通過。

(1)獲取 accessToken

accessToken 有效期為 30 天,因此,可以緩存起來使用。此為示例,時長又足夠長,所以未加刷新機制。代碼如下,其中,clientId 為百度應用中的 API Key,clientSecret 為百度應用中的 Secret Key。

public static class AccessToken

{

// 有效期30天,緩存獲取的 access token

public static String TOKEN = null;

// 百度云中開通對應服務應用的 API Key

private static String clientId = "API Key";

// 百度云中開通對應服務應用的 Secret Key

private static String clientSecret = "Secret Key";

public static String getAccessToken()

{

if (String.IsNullOrEmpty(TOKEN))

{

String authHost = "https://aip.baidubce.com/oauth/2.0/token";

HttpClient client = new HttpClient();

List> paraList = new List>();

paraList.Add(new KeyValuePair("grant_type", "client_credentials"));

paraList.Add(new KeyValuePair("client_id", clientId));

paraList.Add(new KeyValuePair("client_secret", clientSecret));

HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;

String result = response.Content.ReadAsStringAsync().Result;

JObject jr = JObject.Parse(result);

TOKEN = jr.Value("access_token");

}

return TOKEN;

}

}

(2)調用 API 取得活體概率

API 的返回結果為 JSON,其中包括了活體概率,這里,方法直接返回 API 的 JSON 結果。

public class FaceLivenessHelper

{

// 在線活體檢測

public static string FaceVerify(string imgUrl)

{

string token = AccessToken.getAccessToken();

string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceverify?access_token=" + token;

Encoding encoding = Encoding.Default;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);

request.Method = "post";

request.KeepAlive = true;

// String str = "[{\"image\":\"sfasq35sadvsvqwr5q...\",\"image_type\":\"BASE64\",\"face_field\":\"age,beauty,expression\"}]";

String str = "[{\"image\":\"" + imgUrl + "\",\"image_type\":\"URL\",\"face_field\":\"age,beauty,expression\"}]";

byte[] buffer = encoding.GetBytes(str);

request.ContentLength = buffer.Length;

request.GetRequestStream().Write(buffer, 0, buffer.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);

string result = reader.ReadToEnd();

Console.WriteLine("在線活體檢測:");

Console.WriteLine(result);

return result;

}

}

結果中:face_liveness 即表示“活體分數值”。

(3)應用

API 的調用結果中,error_code 為 0 時表示執行成功,此時,會有 result 屬性表示計算的相關值,從中取出 face_liveness 即可,其值為 0 ~ 1之間。

string imgUrl = "------";

string result = FaceLivenessHelper.FaceVerify(imgUrl);

JObject jresult = JObject.Parse(result);

JObject lvresult = jresult.Value("result");

// error_code 為 0 時表示執行成功,其它表示失敗

if (jresult.Value("error_code") == 0)

{

double face_liveness = lvresult.Value("face_liveness");

// 活體率達到要求

if (face_liveness >= 0.995)

{

// 通過檢測

}

}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。

時間: 2019-09-08

總結

以上是生活随笔為你收集整理的android调用百度活体检测接口,C#调用百度API实现活体检测的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。