private static (float compareConfidence, float liveConfidence, float faceConfidence) CheckVideo(string videoFile, string imageFile, string accessKeyId, string accessKeySecret) {
#pragma warning disable
float compare = 0, live = 0, face = 0;
#pragma warning restore
var fileUtils = AlibabaCloud.SDK.VIAPI.Utils.FileUtils.getInstance(accessKeyId, accessKeySecret);
var client = new AlibabaCloud.SDK.Facebody20191230.Client(new AlibabaCloud.OpenApiClient.Models.Config {
AccessKeyId = accessKeyId,
AccessKeySecret = accessKeySecret,
Endpoint = "facebody.cn-shanghai.aliyuncs.com"
});
using var capture = new OpenCvSharp.VideoCapture(videoFile);
capture.PosFrames = capture.FrameCount / 2;
var frame = new OpenCvSharp.Mat();
capture.Read(frame);
var jpg = videoFile + ".jpg";
OpenCvSharp.Cv2.ImWrite(jpg, frame);
var ua = fileUtils.Upload(jpg);
System.IO.File.Delete(jpg);
var ub = fileUtils.Upload(imageFile);
var cp = client.CompareFace(new AlibabaCloud.SDK.Facebody20191230.Models.CompareFaceRequest {
ImageURLA = ua,
ImageURLB = ub,
});
compare = (cp.Body.Data.Confidence ?? 0) / 100;
var ossUrl = fileUtils.Upload(videoFile);
var response = client.DetectVideoLivingFace(new AlibabaCloud.SDK.Facebody20191230.Models.DetectVideoLivingFaceRequest {
VideoUrl = ossUrl
});
foreach (var element in response.Body.Data.Elements) {
live = element.LiveConfidence ?? 0;
face = element.FaceConfidence ?? 0;
break;
}
return (compare, live, face);
}