簡體   English   中英

帶有 FileStream 圖片的用於 FACE API 的 SDK Azure 的問題

[英]Problem with the SDK Azure for FACE API With FileStream picture

我們嘗試使用 sdk 來使用 Microsoft 的認知服務。 我們使用接口 IFaceOperationsn,其中有一個方法可以通過流發送圖片,例如:DetectWithStreamWithHttpMessagesAsync。 當我們嘗試使用它時,我們遇到了一個 APIErrorException,它的消息是 Bad request 但不知道問題出在哪里,所以這是我們的代碼:

public async Task<List<FaceAPI.Face>> DetectFace(string picture)
        {
            try
            {
                Stream img = new FileStream(picture, FileMode.Open);
                var res = await detect.DetectWithStreamWithHttpMessagesAsync(img);
                List<FaceAPI.Face> result = new List<FaceAPI.Face>();
                for (int i = 0; i < res.Body.Count; i++)
                {
                    result.Add(new FaceAPI.Face { Age = (double)res.Body[i].FaceAttributes.Age, Bald = res.Body[i].FaceAttributes.Hair.Bald > 0.5 ? true : false, Beard = res.Body[i].FaceAttributes.FacialHair.Beard > 0.5 ? true : false, Gender = res.Body[i].FaceAttributes.Gender.Value.Equals(Gender.Male) ? true : false, Glasses = res.Body[i].FaceAttributes.Glasses.Value.Equals(GlassesType.NoGlasses) ? false : true, Hair = res.Body[i].FaceAttributes.Hair.HairColor.ToString(), Moustache = res.Body[i].FaceAttributes.FacialHair.Moustache > 0.5 ? true : false,Rectangle=new System.Drawing.Rectangle { X = res.Body[i].FaceRectangle.Left, Y = res.Body[i].FaceRectangle.Top, Height = res.Body[i].FaceRectangle.Height, Width = res.Body[i].FaceRectangle.Width } });
                }
                return result;
            }
            catch (APIErrorException e)
            {
                Debug.WriteLine(e.Message);
                return null;
            }
            catch (SerializationException e)
            {
                Debug.WriteLine(e.Message);
                return null;
            }
            catch (ValidationException e)
            {
                Debug.WriteLine(e.Message);
                return null;
            }
        }

通常它返回一個人臉列表。

您需要像這樣放置一個您想要檢索的檢測屬性:

var requiredFaceAttributes = new FaceAttributeType[] {
                    FaceAttributeType.Age,
                    FaceAttributeType.Hair,
                    FaceAttributeType.Gender,
                    FaceAttributeType.Smile,
                    FaceAttributeType.FacialHair,
                    FaceAttributeType.Glasses
                };
                var res = await detect.DetectWithStreamWithHttpMessagesAsync(picture,true,true,requiredFaceAttributes);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM