コード例 #1
0
        public async Task <IActionResult> Detect([FromBody] FaceUploadModel model)
        {
            //var faceDetect = await _faceClient.DetectAsync(this.Request.Body,true,true);
            //var targetFace = faceDetect.First().FaceRectangle;
            //this.Request.Body.Seek(0, SeekOrigin.Begin);
            var photo = model.Photo.Substring(_imgPrefix.Length);
            var bytes = Convert.FromBase64String(photo);

            var memoryStream = new MemoryStream(bytes);
            var result       = await _faceClient.DetectAsync(memoryStream, true, true /*, null, targetFace */);

            var face = result[0];

            return(this.Json(new {
                FaceId = face.FaceId,
                Rect = face.FaceRectangle,
                Landmarks = face.FaceLandmarks
            }));;
        }
コード例 #2
0
        public async Task <IActionResult> AddFace([FromBody] FaceUploadModel model)
        {
            var cursor = await _db.Persons.FindAsync(Builders <PersonDocument> .Filter.Eq(x => x.Id, model.UserID));

            var doc = await cursor.FirstAsync();

            var photo        = model.Photo.Substring(_imgPrefix.Length);
            var bytes        = Convert.FromBase64String(photo);
            var memoryStream = new MemoryStream(bytes);
            var result       = await _faceClient.AddPersonFaceAsync(_personGroupKey, doc.PersonId, memoryStream /*, null, targetFace */);

            var face = new FaceDocument()
            {
                Id              = ObjectId.GenerateNewId().ToString(),
                UserId          = doc.Id,
                ImageBase64     = photo,
                PersonId        = doc.PersonId,
                PersistedFaceId = result.PersistedFaceId,
                Created         = DateTime.Now
            };

            _db.Faces.InsertOneAsync(face);
            return(this.Json(doc));
        }