阿里云 视频活体检测、人脸比对

        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);
        }

 

posted @ 2025-05-21 16:57  大胡子毛绒老头  阅读(10)  评论(0)    收藏  举报