Exemplo n.º 1
0
        public async Task <VisionAnalysis> AnalyzeImageUrlAsync(string imageUrl, CancellationToken token)
        {
            var client = AuthenticateClient();

            _logger.LogInformation($"Analyze image with ep {_settings.Endpoint}");
            // analyze image
            _logger.LogInformation($"Analyze image {imageUrl}");
            var results = await client.AnalyzeImageAsync(imageUrl, visualFeatures : GetVisualFeatureTypes(), cancellationToken : token);

            var data = JsonConvert.SerializeObject(results);
            // _logger.LogInformation(data);
            var analysis = new VisionAnalysis();

            // description
            foreach (var caption in results.Description.Captions)
            {
                analysis.Descriptions.Add(new VisionSummary(caption.Text, caption.Confidence));
            }
            // categories
            foreach (var category in results.Categories)
            {
                analysis.Categories.Add(new VisionCategory(category.Name, category.Score));
            }
            // tags
            foreach (var tag in results.Tags)
            {
                analysis.Tags.Add(new VisionSummary(tag.Name, tag.Confidence));
            }
            // object detection
            foreach (var obj in results.Objects)
            {
                var rect = new Models.BoundingRect(obj.Rectangle.X, obj.Rectangle.Y, obj.Rectangle.W, obj.Rectangle.H);
                analysis.Objects.Add(new VisionObject(obj.Confidence, obj.ObjectProperty, rect));
            }
            // color
            var vColor = new VisionColor(
                results.Color.IsBWImg,
                results.Color.AccentColor,
                results.Color.DominantColorBackground,
                results.Color.DominantColorForeground,
                results.Color.DominantColors);

            analysis.AddColor(vColor);
            _logger.LogInformation("returning analysis");
            return(analysis);
        }
Exemplo n.º 2
0
        public async Task <VisionResult> Handle(VisionProcessRequest request, CancellationToken cancellationToken)
        {
            _logger.LogInformation($"Process request: {request.FileName}");
            var imgUrl = await _storageService.SaveDocumentAsync(request.FileName, request.ContentType, request.DataStream, cancellationToken);

            VisionAnalysis analysis     = null;
            string         thumbnailUrl = null;

            if (!string.IsNullOrEmpty(imgUrl))
            {
                analysis = await _visionService.AnalyzeImageUrlAsync(imgUrl, cancellationToken);

                thumbnailUrl = await GenerateThumbnailAsync(imgUrl, request.ContentType, cancellationToken);
            }
            return(new VisionResult
            {
                Success = true,
                Url = imgUrl,
                Analysis = analysis,
                ThumbnailUrl = thumbnailUrl
            });
        }