C\#바 이 두 API 를 호출 하여 생체 검 사 를 실현 하 는 방법
생체 검 사 는 여러 가지 상황 이 있 는데 본 고 는 카메라 에서 얻 은 영상 에서 생체 인지 사진 등 정적 사진 을 사 용 했 는 지 판단 하 는 것 을 말한다.
장면 묘사
사용자 개인 정보 에는 사용자 가 카 메 라 를 지나 갈 때 신분 인식 을 하 는 근접 사진 이 올 라 왔 다.
이때 단순히 카메라 로 얻 은 영상 으로 사람의 얼굴 싱크로 율 을 비교 하면 적합 한 사진 을 들 어 카 메 라 를 조준 하 는 것 도 통과 할 수 있다.그래서 카메라 앞 영상 이 생체 인지 확인 하 는 수요 가 생 겼 다.
해결 방안
바 이 두 AI 오픈 플랫폼 을 사용 하여 일 정량의 이 장면 생체 검사 API 를 무료 로 개방 합 니 다.
https://ai.baidu.com/tech/face/faceliveness
첫 번 째,바 이 두 애플 리 케 이 션 신청
'즉시 사용'을 클릭 하고 로그 인 후'앱 만 들 기'를 하면 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<KeyValuePair<String, String>> paraList = new List<KeyValuePair<string, string>>();
paraList.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
paraList.Add(new KeyValuePair<string, string>("client_id", clientId));
paraList.Add(new KeyValuePair<string, string>("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<string>("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;
}
}
자세 한 API 문 서 는 다음 과 같 습 니 다https://ai.baidu.com/docs#/Face-Liveness-V3/top결과:faceliveness 는 바로'생체 분 수치'를 나타 낸다.
(3)응용
API 호출 결과,errorcode 가 0 일 때 실행 성공 을 표시 합 니 다.이때 result 속성 은 계 산 된 관련 값 을 표시 하고 그 중에서 face 를 꺼 냅 니 다.liveness 면 됩 니 다.그 값 은 0~1 사이 입 니 다.
string imgUrl = "------";
string result = FaceLivenessHelper.FaceVerify(imgUrl);
JObject jresult = JObject.Parse(result);
JObject lvresult = jresult.Value<JObject>("result");
// error_code 0 ,
if (jresult.Value<int>("error_code") == 0)
{
double face_liveness = lvresult.Value<double>("face_liveness");
//
if (face_liveness >= 0.995)
{
//
}
}
총결산이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.