SGGL_HBAZ/SGGL/WebAPI/Controllers/HSSE/ImageRecognitionController.cs

135 lines
4.6 KiB
C#
Raw Normal View History

2025-02-20 17:21:35 +08:00
using System;
using System.IO;
using RestSharp; //依赖版本106.15.0 https://www.nuget.org/packages/RestSharp/106.15.0
using Newtonsoft.Json; //https://www.nuget.org/packages/Newtonsoft.Json
using System.Web.Http;
using System.Collections.Generic;
namespace WebAPI.Controllers.HSSE
{
public class ImageRecognitionController : ApiController
{
const string API_KEY = "2pHOZ7ff76vYgYoIwQnTIB31";
const string SECRET_KEY = "8q4Oa8wLi6xorfYQgUlEBqM4OOHqFXL7";
[HttpPost]
public Model.ResponeData getImageContent([FromBody] ImageRequest imageRequest)
{
var responeData = new Model.ResponeData();
try
{
var client = new RestClient($"https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token={GetAccessToken()}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
string image = imageRequest.Image;
var body = $@"{{""image"":""{image}"",""image_type"":""BASE64"",""max_face_num"":30}}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
string json = response.Content;
var responseData = JsonConvert.DeserializeObject<ResponseData>(json);
int errorCode = responseData.error_code;
if (errorCode != 0)
{
responeData.message = responseData.error_msg;
}
else
{
int faceNum = responseData.result.face_num;
responeData.data = faceNum;
}
}
catch (Exception ex)
{
responeData.code = 0;
}
return responeData;
}
/**
* base64编码
* @param path
* @return base64编码信息
*/
public string GetFileContentAsBase64(string path)
{
using (FileStream filestream = new FileStream(path, FileMode.Open))
{
byte[] arr = new byte[filestream.Length];
filestream.Read(arr, 0, (int)filestream.Length);
string base64 = Convert.ToBase64String(arr);
return base64;
}
}
/**
* 使 AKSK Access Token
* @return Access Token
*/
public string GetAccessToken()
{
var client = new RestClient($"https://aip.baidubce.com/oauth/2.0/token");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_id", API_KEY);
request.AddParameter("client_secret", SECRET_KEY);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var result = JsonConvert.DeserializeObject<dynamic>(response.Content);
return result.access_token.ToString();
}
public class ImageRequest
{
public string Image { get; set; }
}
public class Location
{
public double left { get; set; }
public double top { get; set; }
public double width { get; set; }
public double height { get; set; }
public double rotation { get; set; }
}
public class Angle
{
public double yaw { get; set; }
public double pitch { get; set; }
public double roll { get; set; }
}
public class Face
{
public string face_token { get; set; }
public Location location { get; set; }
public double face_probability { get; set; }
public Angle angle { get; set; }
}
public class Result
{
public int face_num { get; set; }
public List<Face> face_list { get; set; }
}
public class ResponseData
{
public int error_code { get; set; }
public string error_msg { get; set; }
public long log_id { get; set; }
public long timestamp { get; set; }
public int cached { get; set; }
public Result result { get; set; }
}
}
}