gpt4 book ai didi

c# - Microsoft Cognitive Service Vision API ClientException 错误

转载 作者:太空狗 更新时间:2023-10-30 00:48:43 25 4
gpt4 key购买 nike

我正在尝试使用 Vision Cognitive Services 来接收图像的描述,但我的代码总是抛出此异常:

Exception Microsoft.ProjectOxford.Vision.ClientException
HResult=0x80131500
Origine=<Non è possibile valutare l'origine dell'eccezione>
Stack:
in Microsoft.ProjectOxford.Vision.VisionServiceClient.HandleException (Exception exception)
in Microsoft.ProjectOxford.Vision.VisionServiceClient.<SendAsync>b__42_1[TRequest,TResponse](Exception e)
in System.AggregateException.Handle(Func`2 predicate)
in Microsoft.ProjectOxford.Vision.VisionServiceClient.<SendAsync>d__42`2.MoveNext()
in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
in Microsoft.ProjectOxford.Vision.VisionServiceClient.<AnalyzeImageAsync>d__21`1.MoveNext()
in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
in Microsoft.ProjectOxford.Vision.VisionServiceClient.<AnalyzeImageAsync>d__20.MoveNext()
in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
in System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
in CognitiveServices.MainPage.<Button_Clicked>d__1.MoveNext() in C:\Users\manu9\documents\visual studio 2017\Projects\CognitiveServices\CognitiveServices\CognitiveServices\MainPage.xaml.cs: riga 48

这是我的代码:

using Microsoft.ProjectOxford.Vision;
using Microsoft.ProjectOxford.Vision.Contract;
using Plugin.Media;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace CognitiveServices
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}

private async void Button_Clicked(object sender, EventArgs e)
{
var media = Plugin.Media.CrossMedia.Current;
await media.Initialize();
var file = await media.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
SaveToAlbum = false
});
image.Source = ImageSource.FromStream(() => file.GetStream());

var visionClient = new VisionServiceClient("MY_API_KEY");

var visualFeats = new VisualFeature[]
{
VisualFeature.Description,
VisualFeature.Faces
};

Stream imagestream = file.GetStream();
imagestream.Seek(0, SeekOrigin.Begin);

var result = await visionClient.AnalyzeImageAsync(imagestream, visualFeats);
description.Text = result.Description.Captions.First().Text;

Debug.WriteLine(result.Description.Captions[0].Text);
file.Dispose();
}
}
}

为什么我总是有这个异常?我读到有人通过添加类似 imageStream.Seek(0) 的内容解决了这个问题,这是真的吗?

最佳答案

您的 API key 很可能与您访问的端点不对应。如果您查看 source code of the client你会看到默认情况下它到达美国西部 (https://westus.api.cognitive.microsoft.com/vision/v1.0) 并且你的 key 可能对应(因为它在我的案例)与另一个地区。

您可以通过执行 new VisionServiceClient(apiKey, apiRoot) 来更改它,其中 apiRoot 是通过 Azure 门户获得的:enter image description here

在我的例子中输出的工作代码Satya Nadella 戴着眼镜对着镜头微笑

using Microsoft.ProjectOxford.Vision;
using Microsoft.ProjectOxford.Vision.Contract;
using System;
using System.Configuration;
using System.IO;

namespace VisionClient
{
public class Program
{
public static void Main(string[] args)
{
AnalyzeImage();
Console.WriteLine("Press any key to exit...");
Console.ReadLine();
}

private static void AnalyzeImage()
{
var apiKey = ConfigurationManager.AppSettings["VisionApiSubscriptionKey"];
var apiRoot = "https://eastus2.api.cognitive.microsoft.com/vision/v1.0";
var visionClient = new VisionServiceClient(apiKey, apiRoot);

var visualFeats = new VisualFeature[]
{
VisualFeature.Description,
VisualFeature.Faces
};

Stream imageStream = File.OpenRead("satyaNadella.jpg");

try
{
AnalysisResult analysisResult = visionClient.AnalyzeImageAsync(imageStream, visualFeats).Result;
foreach(var caption in analysisResult.Description.Captions)
{
Console.WriteLine("Description: " + caption.Text);
}
}
catch (ClientException e)
{
Console.WriteLine("Vision client error: " + e.Error.Message);
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
}
}
}

关于c# - Microsoft Cognitive Service Vision API ClientException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43948214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com