與 Microsoft 認知服務連線

在此示例中,你將學習如何將 Microsoft Cognitive Services 與 Xamarin iOS 移動應用程式一起使用。我們將使用 Computer Vision API 來檢測圖片中的內容。

建立 Xamarin.iOS 專案後,請將以下 NuGet 包新增到專案中:

https://www.nuget.org/packages/Microsoft.ProjectOxford.Vision/

有了這個庫,我們將能夠在我們的 iOS 應用程式中使用認知服務。我假設你已經註冊了 Microsoft 帳戶以使用它,並且你已在下面的螢幕上啟用了 Computer Vision Api: StackOverflow 文件

點選底部的訂閱後,將生成 Api 金鑰:

StackOverflow 文件

現在我們可以從 iOS 應用程式開始配置對 Cognitive Services 的訪問。首先,我們需要為分析得到一些圖片。要做到這一點,我們可以使用下面提供的 Xamarin Media Component: https//components.xamarin.com/view/mediaplugin

成功安裝後,讓我們使用影象和按鈕建立簡單的 UI,從庫中選擇圖片。控制元件的大小取決於你。

開啟 Main.storyboard 並新增 UIImageView 和 UIButton 控制元件做預設的 ViewController。新增它們的名稱:SelectedPictureImageViewSelectButton

StackOverflow 文件

現在我們應該新增 Touch Up Inside 事件處理程式來處理影象選擇:

partial void SelectButtonClick(UIButton sender)
{
    selectImage();
}

async void selectImage()
{
    var selectedImage = await CrossMedia.Current.PickPhotoAsync();
    SelectedPictureImageView.Image =  new UIImage(NSData.FromStream(selectedImage.GetStream()));
}

現在,我們希望在 Cognitive Services 返回資訊後顯示分析資訊。在名為 AnalysisLabel 的按鈕下新增標籤: StackOverflow 文件

是時候連線 Computer Vision API 了!

要獲取有關所選圖片的資訊,請新增以下方法記得貼上你的 API 金鑰!

async Task analyseImage(Stream imageStream)
{
    try
    {
        VisionServiceClient visionClient = new VisionServiceClient("<<YOUR API KEY HERE>>");
        VisualFeature[] features = { VisualFeature.Tags, VisualFeature.Categories, VisualFeature.Description };
        var analysisResult = await visionClient.AnalyzeImageAsync(imageStream, features.ToList(), null);
        AnalysisLabel.Text = string.Empty;
        analysisResult.Description.Tags.ToList().ForEach(tag => AnalysisLabel.Text = AnalysisLabel.Text + tag + "\n");
    }
    catch (Microsoft.ProjectOxford.Vision.ClientException ex)
    {
        AnalysisLabel.Text = ex.Error.Message;
    }
}

現在你可以在 selectImage 方法中呼叫它:

async void selectImage()
{
    var selectedImage = await CrossMedia.Current.PickPhotoAsync();
    SelectedPictureImageView.Image =  new UIImage(NSData.FromStream(selectedImage.GetStream()));
    await analyseImage(selectedImage.GetStream());
}

選擇影象後,Microsoft Cognitive Services 將對其進行分析並返回結果:

StackOverflow 文件

請記住,你的影象不能太大 - 在這種情況下,你將收到如下資訊:

StackOverflow 文件

你可以嘗試使用許多其他服務。請參閱官方文件(連結附件)以瞭解更多資訊。