与 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 文档

你可以尝试使用许多其他服务。请参阅官方文档(链接附件)以了解更多信息。