当前位置:   article > 正文

实战指南:使用 C# 轻松集成 Exadel CompreFace 人脸识别库,附完整代码示例_compreface如何使用

compreface如何使用

使用 C# 与 Exadel CompreFace 进行人脸识别功能的集成主要涉及以下几个步骤:安装与配置 CompreFace,通过 C# 发起 HTTP 请求与 CompreFace API 进行交互,以及处理响应结果。以下是一个详细的 C# 示例,展示如何使用 HttpClient 类与 Newtonsoft.Json 库来实现这些功能。

一、前置准备

确保已安装以下 NuGet 包:

  • System.Net.Http:提供 HttpClient 类,用于发送 HTTP 请求。
  • Newtonsoft.Json:用于 JSON 数据的序列化与反序列化。

二、创建 HttpClient 实例

 

Csharp

  1. using System.Net.Http;
  2. using Newtonsoft.Json;
  3. // ...
  4. private readonly HttpClient _httpClient = new HttpClient
  5. {
  6. BaseAddress = new Uri("http://localhost:8000/api/v1/")
  7. };

三、设置 API 访问令牌

在请求头中添加 Authorization 字段,附上访问令牌:

 

Csharp

  1. private const string AccessToken = "YOUR_ACCESS_TOKEN"; // 替换为实际的访问令牌
  2. private readonly HttpRequestHeaders _defaultHeaders = new HttpRequestHeaders
  3. {
  4. Authorization = new AuthenticationHeaderValue("Bearer", AccessToken)
  5. };

四、创建人脸集合

 

Csharp

  1. public async Task<string> CreateFaceCollectionAsync(string collectionName)
  2. {
  3. var url = "faces/collections";
  4. var content = new StringContent(JsonConvert.SerializeObject(new { name = collectionName }), Encoding.UTF8, "application/json");
  5. using var request = new HttpRequestMessage(HttpMethod.Post, url)
  6. {
  7. Content = content,
  8. Headers = _defaultHeaders
  9. };
  10. var response = await _httpClient.SendAsync(request);
  11. response.EnsureSuccessStatusCode();
  12. var responseContent = await response.Content.ReadAsStringAsync();
  13. var result = JsonConvert.DeserializeObject<FaceCollectionCreationResponse>(responseContent);
  14. return result.Id;
  15. }

其中,FaceCollectionCreationResponse 类应定义如下:

 

Csharp

  1. public class FaceCollectionCreationResponse
  2. {
  3. public string Id { get; set; }
  4. }

五、添加人脸到集合

 

Csharp

  1. public async Task AddFaceToCollectionAsync(string collectionId, string externalId, string imagePath)
  2. {
  3. var url = $"faces/collections/{collectionId}/faces";
  4. var imageData = await GetImageDataAsBase64Async(imagePath);
  5. var content = new StringContent(JsonConvert.SerializeObject(new
  6. {
  7. external_id = externalId,
  8. image = imageData
  9. }), Encoding.UTF8, "application/json");
  10. using var request = new HttpRequestMessage(HttpMethod.Post, url)
  11. {
  12. Content = content,
  13. Headers = _defaultHeaders
  14. };
  15. var response = await _httpClient.SendAsync(request);
  16. response.EnsureSuccessStatusCode();
  17. }
  18. private async Task<string> GetImageDataAsBase64Async(string imagePath)
  19. {
  20. byte[] imageDataBytes;
  21. using (var fileStream = File.OpenRead(imagePath))
  22. {
  23. imageDataBytes = new byte[fileStream.Length];
  24. await fileStream.ReadAsync(imageDataBytes, 0, (int)fileStream.Length);
  25. }
  26. return Convert.ToBase64String(imageDataBytes);
  27. }

六、进行人脸识别

 

Csharp

  1. public async Task<FaceRecognitionResult> RecognizeFaceAsync(string collectionId, string imagePath)
  2. {
  3. var url = "recognition";
  4. var imageData = await GetImageDataAsBase64Async(imagePath);
  5. var content = new StringContent(JsonConvert.SerializeObject(new
  6. {
  7. image = imageData,
  8. collections_ids = new[] { collectionId }
  9. }), Encoding.UTF8, "application/json");
  10. using var request = new HttpRequestMessage(HttpMethod.Post, url)
  11. {
  12. Content = content,
  13. Headers = _defaultHeaders
  14. };
  15. var response = await _httpClient.SendAsync(request);
  16. response.EnsureSuccessStatusCode();
  17. var responseContent = await response.Content.ReadAsStringAsync();
  18. var result = JsonConvert.DeserializeObject<FaceRecognitionResponse>(responseContent);
  19. return result.Matches.FirstOrDefault();
  20. }
  21. public class FaceRecognitionResponse
  22. {
  23. public FaceRecognitionResult[] Matches { get; set; }
  24. }
  25. public class FaceRecognitionResult
  26. {
  27. public string ExternalId { get; set; }
  28. public double Distance { get; set; } // 代表相似度分数,越接近0表示越相似
  29. }

以上代码示例展示了如何使用 C# 通过 HttpClient 与 CompreFace API 进行交互,完成人脸集合创建、人脸添加以及人脸识别等操作。请注意替换实际的访问令牌(YOUR_ACCESS_TOKEN)以及图像文件路径,并根据需要调整响应数据模型以适应 CompreFace API 的实际返回结构。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/736785
推荐阅读
相关标签
  

闽ICP备14008679号