C\#바 이 두 API 를 호출 하여 생체 검 사 를 실현 하 는 방법

5828 단어 c#생체검출
머리말
생체 검 사 는 여러 가지 상황 이 있 는데 본 고 는 카메라 에서 얻 은 영상 에서 생체 인지 사진 등 정적 사진 을 사 용 했 는 지 판단 하 는 것 을 말한다.
장면 묘사
사용자 개인 정보 에는 사용자 가 카 메 라 를 지나 갈 때 신분 인식 을 하 는 근접 사진 이 올 라 왔 다.
이때 단순히 카메라 로 얻 은 영상 으로 사람의 얼굴 싱크로 율 을 비교 하면 적합 한 사진 을 들 어 카 메 라 를 조준 하 는 것 도 통과 할 수 있다.그래서 카메라 앞 영상 이 생체 인지 확인 하 는 수요 가 생 겼 다.
해결 방안
바 이 두 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)
  {
    //     
  }
}
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기