قبل از اینکه به خدمات شناختی بپردازیم، ابتدا باید ایده ای از کارهایی که خدمات شناختی در زندگی واقعی انجام می دهند به دست آوریم. بنابراین، اجازه دهید یک مثال واقعی از یک فرد نابینا را در نظر بگیریم. سکیب شیخ از هر دو چشم نابینا است و در سن هفت سالگی بینایی خود را از دست داده است. با این حال، به لطف خدمات شناختی مایکروسافت، او همچنان با استفاده از خدمات شناختی مایکروسافت احساسات و همچنین تصاویری از همه چیز را احساس می کند. امروز، ما در مورد بهترین خدمات شناختی جهان از مایکروسافت صحبت می کنیم و بعداً این را در فرم های Xamarin پیاده سازی خواهیم کرد، بنابراین هر فرد می تواند از خدمات شناختی لذت ببرد.
بیا شروع کنیم. اولین چیزی که باید بدانید RESTful API است و سپس به سادگی به https://www.microsoft.com/cognitive-services بروید، جایی که ما چند API RESTful داریم.
به طور خلاصه، ما با استفاده از بسته Vision NuGet بقیه API ها را در فرم های Xamarin مصرف می کنیم. بنابراین، بیایید به Visual Studio 2015 یا Xamarin Studio برویم و یک پروژه جدید ایجاد کنیم، چند خط XAML را به فایل XAML خود اضافه کنیم.
- <StackLayout Padding="50">
- <Button x:Name="BtnImage" Text="Pick Image" Clicked="BtnImage_OnClicked" />
- <Image x:Name="Img" WidthRequest="200" HeightRequest="200"/>
- <Label x:Name="LblResult" FontSize="32" />
- </StackLayout>
اکنون، یک بسته NuGet Microsoft.ProjectOxford.Vision را وارد کنید
پس از آن، یک بسته دیگر برای Camera یعنی Xam.Plugin.Media اضافه کنید.
اکنون کافی است دوربین را مقداردهی اولیه کنید و چند خط کد اضافه کنید تا بتوانید به دوربین موبایل و دستگاه های دسکتاپ دسترسی داشته باشید.
- var media = Plugin.Media.CrossMedia.Current;
- await media.Initialize();
- var file = await media.TakePhotoAsync(new StoreCameraMediaOptions { SaveToAlbum = false });
- Img.Source = ImageSource.FromStream(() => file.GetStream());
وقت آن است که با یک کلاینت ویژن مانند HttpClient تماس بگیرید.
بنابراین، کاری که میخواهم انجام دهم این است که به سادگی چند خط کد را در اینجا اضافه میکنم تا به تماس و پاسخ بازخورد خدمات شناختی دسترسی پیدا کنم و سپس نتیجه واقعی را در برچسب اضافه کنم.
- var visionclient = new VisionServiceClient(visionKey);
- var result = await visionclient.DescribeAsync(file.GetStream());
- LblResult.Text = result.Description.Captions.First().Text;
وقت آن رسیده است که با استفاده از خط زیر، تابع Dispose را فراخوانی کنید تا از نشت حافظه و نقص حافظه در برنامه های خود جلوگیری کنید.
file.Dispose()
اکنون، تنها یک دستگاه یا یک اتصال اینترنتی برای دسترسی به پاسخ JSON و تماس با Microsoft Cognitive Services API است.
بگذارید ببینیم وقتی از دوربین عکس میگیرم چگونه به نظر میرسد و از طریق پاسخ JSON چه چیزی میآید.