2017-05-13 9 views
3

私はイメージの説明を受けるためにビジョン認知サービスを使用しようとしているが、私のコードは常にこの例外がスローされます。マイクロソフト認知サービスビジョンAPI ClientExceptionエラー

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)のようなものを追加することでこれを解決したと読むのは本当ですか?

答えて

5

あなたのAPIキーは、あなたがヒットしているエンドポイントに対応していない可能性があります。 source code of the clientを見ると、デフォルトでWest US(https://westus.api.cognitive.microsoft.com/vision/v1.0)に当たっていて、あなたのキーは(私の場合のように)別の地域と対応していることがわかります。

あなたはAzureのポータルを介して取得されapiRootnew VisionServiceClient(apiKey, apiRoot)を行うことによって、これを変更することができます。私の場合Satya Nadella wearing glasses and smiling at the cameraを出力enter image description here

の作業コードを。

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

それは私のためにそれを解決しました! Azure Docsがこれらの事実を言いたいと願っていました! – Rippo

関連する問題