与 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:
点击底部的订阅后,将生成 Api 密钥:
现在我们可以从 iOS 应用程序开始配置对 Cognitive Services 的访问。首先,我们需要为分析得到一些图片。要做到这一点,我们可以使用下面提供的 Xamarin Media Component: https : //components.xamarin.com/view/mediaplugin
成功安装后,让我们使用图像和按钮创建简单的 UI,从库中选择图片。控件的大小取决于你。
打开 Main.storyboard 并添加 UIImageView 和 UIButton 控件做默认的 ViewController。添加它们的名称:SelectedPictureImageView
和 SelectButton
:
现在我们应该添加 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
的按钮下添加标签:
是时候连接 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 将对其进行分析并返回结果:
请记住,你的图像不能太大 - 在这种情况下,你将收到如下信息:
你可以尝试使用许多其他服务。请参阅官方文档(链接附件)以了解更多信息。