当前位置: 首页 > 工具软件 > CompreFace > 使用案例 >

Compreface .Net SDK

元修然
2023-12-01

用到的实体类:

    public class Age
    {
        /// <summary>
        /// 
        /// </summary>
        public double probability { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int high { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int low { get; set; }

    }



    public class Gender
    {
        /// <summary>
        /// 
        /// </summary>
        public double probability { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string value { get; set; }

    }



    public class Box
    {
        /// <summary>
        /// 
        /// </summary>
        public double probability { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int x_max { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int y_max { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int x_min { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int y_min { get; set; }

    }



    public class SubjectsItem
    {
        /// <summary>
        /// 刘德华
        /// </summary>
        public string subject { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public double similarity { get; set; }

    }

    public class ResultItem
    {
        /// <summary>
        /// 
        /// </summary>
        public Age age { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public Gender gender { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public Box box { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public List<SubjectsItem> subjects { get; set; }
        public Mask mask { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<List<int>> landmarks { get; set; }

    }

    public class Mask
    {
        public double probability { get; set; }
        public string value { get; set; }
    }
    public class Root
    {
        /// <summary>
        /// 
        /// </summary>
        public List<ResultItem> result { get; set; }

    }

    public class SubjectModel
    {
        public string subject { get; set; }
        public string image_id { get; set; }
    }

接口及用法:

    using System;
    using System.IO;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Net.Http.Json;

    internal class Program
    {

        static HttpClient _httpClient;

        static void Main(string[] args)
        {
            _httpClient = new HttpClient
            {
                BaseAddress = new Uri("http://localhost:8000/api/v1/"),
                Timeout = TimeSpan.FromSeconds(5),
            };
            _httpClient.DefaultRequestHeaders.Accept.Clear();
            _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            // 必须添加服务的密钥
            _httpClient.DefaultRequestHeaders.Add("x-api-key", "00000000-0000-0000-0000-000000000000");

            var bytes = File.ReadAllBytes(@"C:\Users\XXX\XXX\图片\dh.png");
            AddProjectItem("Alice", bytes);
            Console.ReadLine();
        }

        /// <summary>
        /// 添加人脸库
        /// </summary>
        private static async void AddProject(string projectName)
        {
            var result = await _httpClient.PostAsJsonAsync("recognition/subjects", new SubjectModel { subject = projectName });
            if (result.Content.Headers.ContentLength > 0)
            {
                var res = await result.Content.ReadFromJsonAsync<SubjectModel>();
            }
        }

        /// <summary>
        /// 删除人脸库
        /// </summary>
        /// <param name="projectName">人脸库名称</param>
        private static async void DeleteProject(string projectName)
        {
            var result = await _httpClient.DeleteAsync($"recognition/subjects/{projectName}");
            if (result.Content.Headers.ContentLength > 0)
            {
                var res = await result.Content.ReadFromJsonAsync<SubjectModel>();
            }
        }

        /// <summary>
        /// 删除训练图片
        /// </summary>
        /// <param name="id">训练图片Id</param>
        private static async void DeleteProjectItem(string id)
        {
            var result = await _httpClient.DeleteAsync($"recognition/faces/{id}");
            if (result.Content.Headers.ContentLength > 0)
            {
                var res = await result.Content.ReadFromJsonAsync<SubjectModel>();
            }
        }

        /// <summary>
        /// 添加训练图片
        /// </summary>
        /// <param name="projectName">人脸库名称</param>
        /// <param name="image">图片数据</param>
        private static async void AddProjectItem(string projectName, byte[] image)
        {
            var result = await _httpClient.PostAsJsonAsync($"recognition/faces?subject={projectName}", new { File = image });
            if (result.Content.Headers.ContentLength > 0)
            {
                var res = await result.Content.ReadFromJsonAsync<SubjectModel>();
            }
        }

        /// <summary>
        /// 识别
        /// </summary>
        /// <param name="bytes">图片数据</param>
        private static async void Recognition(byte[] bytes)
        {
            var result = await _httpClient.PostAsJsonAsync("recognition/recognize?face_plugins=mask", new { File = bytes });
            if (result.Content.Headers.ContentLength > 0)
            {
                var res = await result.Content.ReadFromJsonAsync<Root>();
            }
        }

    }

 类似资料:

相关阅读

相关文章

相关问答