Пример #1
0
        private async Task <AnalysisInDomainResult> UploadAndAnalyzeImage(MediaFile file, Model domainModel)
        {
            AnalysisInDomainResult analysisResult =
                await visionServiceClient.AnalyzeImageInDomainAsync(file.GetStream(), domainModel);

            return(analysisResult);
        }
Пример #2
0
        /// <summary>
        /// Sends a url to Project Oxford and performs analysis against a given domain
        /// </summary>
        /// <param name="imageUrl">The url of the image to analyze</param>
        /// <param name="domainModel">The domain model to analyze against</param>
        /// <returns></returns>
        private async Task <AnalysisInDomainResult> AnalyzeInDomainUrl(string imageUrl, Model domainModel)
        {
            // -----------------------------------------------------------------------
            // KEY SAMPLE CODE STARTS HERE
            // -----------------------------------------------------------------------

            //
            // Create Project Oxford Vision API Service client
            //
            VisionServiceClient VisionServiceClient = new VisionServiceClient(SubscriptionKey, SubscriptionEndpoint);

            Log("VisionServiceClient is created");

            //
            // Analyze the url against the given domain
            //
            Log("Calling VisionServiceClient.AnalyzeImageInDomainAsync()...");
            AnalysisInDomainResult analysisResult = await VisionServiceClient.AnalyzeImageInDomainAsync(imageUrl, domainModel);

            return(analysisResult);

            // -----------------------------------------------------------------------
            // KEY SAMPLE CODE ENDS HERE
            // -----------------------------------------------------------------------
        }
Пример #3
0
        /// <summary>
        /// Uploads the image to Project Oxford and performs analysis against a given domain
        /// </summary>
        /// <param name="imageFilePath">The image file path.</param>
        /// <param name="domainModel">The domain model to analyze against</param>
        /// <returns></returns>
        private async Task <AnalysisInDomainResult> UploadAndAnalyzeInDomainImage(string imageFilePath, Model domainModel)
        {
            // -----------------------------------------------------------------------
            // KEY SAMPLE CODE STARTS HERE
            // -----------------------------------------------------------------------

            //
            // Create Project Oxford Vision API Service client
            //
            VisionServiceClient VisionServiceClient = new VisionServiceClient(SubscriptionKey, SubscriptionEndpoint);

            Log("VisionServiceClient is created");

            using (Stream imageFileStream = File.OpenRead(imageFilePath))
            {
                //
                // Analyze the image for the given domain
                //
                Log("Calling VisionServiceClient.AnalyzeImageInDomainAsync()...");
                AnalysisInDomainResult analysisResult = await VisionServiceClient.AnalyzeImageInDomainAsync(imageFileStream, domainModel);

                return(analysisResult);
            }

            // -----------------------------------------------------------------------
            // KEY SAMPLE CODE ENDS HERE
            // -----------------------------------------------------------------------
        }
        private async void UploadPictureButton_Clicked(object sender, EventArgs e)
        {
            if (!CrossMedia.Current.IsPickPhotoSupported)
            {
                await DisplayAlert("No upload", "Picking a photo is not supported.", "OK");

                return;
            }

            var file = await CrossMedia.Current.PickPhotoAsync();

            if (file == null)
            {
                return;
            }

            this.Indicator1.IsVisible = true;
            this.Indicator1.IsRunning = true;
            Image1.Source             = ImageSource.FromStream(() => file.GetStream());

            AnalysisInDomainResult analysisResult = await AnalyzePictureAsync(file.GetStream());

            this.CelebrityName.Text = ParseCelebrityName(analysisResult.Result);

            this.Indicator1.IsRunning = false;
            this.Indicator1.IsVisible = false;
        }
        private async Task AnalyzeAndProcessPhoto(MediaFile file)
        {
            Indicator1.IsVisible = true;
            Indicator1.IsRunning = true;
            Image1.Source        = ImageSource.FromStream(() => file.GetStream());
            var analysisResult = await AnalyzePictureAsync(file.GetStream());

            BindingContext = analysisResult;
            tags.IsVisible = true;

            //Text analysis
            if (analysisResult.Tags.Any(t => t.Name.ToLower() == "text"))
            {
                OcrResults ocrResult = await AnalyzePictureTextAsync(file.GetStream());

                pnlOcr.IsVisible = true;
                lblAngel.Text    = $"Text Angel: {ocrResult.TextAngle.ToString()}";
                lblLanguage.Text = $"Language: {ocrResult.Language}";
                PopulateUIWithRegions(ocrResult);
            }
            else
            {
                pnlOcr.IsVisible = false;
            }

            //Detect Celebrity
            AnalysisInDomainResult analysisDomain = await AnalyzePictureDomainAsync(file.GetStream());

            CelebrityName.Text = ParseCelebrityName(analysisDomain.Result);

            Indicator1.IsRunning = false;
            Indicator1.IsVisible = false;
        }
Пример #6
0
        public async void Take()
        {
            await CrossMedia.Current.Initialize();

            if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
            {
                await App.Current.MainPage.DisplayAlert("No Camera", "No camera available.", "OK");

                return;
            }

            var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
            {
                SaveToAlbum = true,
                Name        = "test.jpg"
            });

            if (file == null)
            {
                return;
            }

            IsBusy = true;

            SourceImage = ImageSource.FromStream(() => file.GetStream());
            AnalysisInDomainResult analysisResult = await AnalyzePictureAsync(file.GetStream());

            Text   = ParseCelebrityName(analysisResult.Result);
            IsBusy = false;
        }
Пример #7
0
        public async Task <AnalysisInDomainResult> MakeAnalysisRequest(Stream stream, Model model)
        {
            // OcrResults text;
            VisionServiceClient    client         = new VisionServiceClient(SubscriptionKey, apiRoot);
            AnalysisInDomainResult analysisResult = await client.AnalyzeImageInDomainAsync(stream, model);

            return(analysisResult);
        }
        /// <summary>
        /// Log the result of an analysis in domain result
        /// </summary>
        /// <param name="result"></param>
        protected void LogAnalysisInDomainResult(AnalysisInDomainResult result)
        {
            if (result.Metadata != null)
            {
                Log("Image Format : " + result.Metadata.Format);
                Log("Image Dimensions : " + result.Metadata.Width + " x " + result.Metadata.Height);
            }

            if (result.Result != null)
            {
                Log("Result : " + result.Result.ToString());
            }
        }
        private async Task <AnalysisInDomainResult> AnalyzePictureAsync(Stream inputFile)
        {
            if (!CrossConnectivity.Current.IsConnected)
            {
                await DisplayAlert("Network error", "Please check your network connection and retry.", "OK");

                return(null);
            }

            AnalysisInDomainResult analysisResult =
                await App.visionClient.AnalyzeImageInDomainAsync(inputFile, await GetDomainModel());

            return(analysisResult);
        }
Пример #10
0
        /// <summary>
        /// Async function to execute FindCelebrity command. Will output celebrities found in image to the UI
        /// </summary>
        /// <param name="obj"></param>
        private async void LoadAndFindCelebrity(object obj)
        {
            Uri         fileUri = new Uri(ImageUrl);
            BitmapImage image   = new BitmapImage(fileUri);

            image.CacheOption = BitmapCacheOption.None;
            image.UriSource   = fileUri;

            ImageSource = image;

            try
            {
                AnalysisInDomainResult celebrityResult = await _visionClient.AnalyzeImageInDomainAsync(ImageUrl, "celebrities");

                if (celebrityResult != null)
                {
                    Celebrity = celebrityResult.Result.ToString();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Failed to analyze image: {ex.Message}");
            }
        }
Пример #11
0
        private async void Upload()
        {
            if (!CrossMedia.Current.IsPickPhotoSupported)
            {
                await App.Current.MainPage.DisplayAlert("No upload", "Picking a photo is not supported.", "OK");

                return;
            }

            var file = await CrossMedia.Current.PickPhotoAsync();

            if (file == null)
            {
                return;
            }

            IsBusy      = true;
            SourceImage = ImageSource.FromStream(() => file.GetStream());

            try
            {
                AnalysisInDomainResult analysisResult = await AnalyzePictureAsync(file.GetStream());

                Text = (ParseCelebrityName(analysisResult.Result)) == "" ? "not matching" : ParseCelebrityName(analysisResult.Result);
            }
            catch (Exception ex)
            {
                await App.Current.MainPage.DisplayAlert("Error", ex.Message, "OK");

                return;
            }
            finally
            {
                IsBusy = false;
            }
        }