예제 #1
0
        private async void AnalyzeImage(string path)
        {
            //time watcher
            var watch = System.Diagnostics.Stopwatch.StartNew();


            AzureVisionAnalyze analyze = VisionClassFactory.CreateVisionClass(VisionAPIType.AzureVisionAnalyze) as AzureVisionAnalyze;

            analyze.Key = "43ff244f1b5047d49d82aac0b482d939";



            Task <AnalysisResult> resTask = analyze.UploadAndAnalyzeImage(path, AzureTagFeature.Tags, AzureTagFeature.Description, AzureTagFeature.Categories, AzureTagFeature.Color);
            AnalysisResult        res     = await resTask;

            //watch end
            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            //write result
            this.richTextBox1.Text  = $"is animal:{res.IsAnimal()}\n";
            this.richTextBox1.Text += $"run with {path}\n";
            this.richTextBox1.Text += $"used {elapsedMs} ms\n";
            this.richTextBox1.Text += VisCommonClass.JsonPrettyPrint(JsonConvert.SerializeObject(res));
            MessageBox.Show($"cost {elapsedMs}ms");
        }
        public async Task <IAnalyzeResult> UploadAndAnalyzeImage(byte[] imageBytes, params System.Enum[] features)
        {
            HttpClient client = new HttpClient();

            //getToken
            string token = BaiduAccessToken.getAccessToken(Key, SecretKey).access_token;
            string uri   = API + "?" + $"access_token={token}";

            //getBase64
            string base64String = Convert.ToBase64String(imageBytes);
            string jsonContent  = this.threshold == null ? $"{{\"image\":\"{base64String}\"}}" : $"{{\"threshold\":\"{this.threshold}\",\"image\":\"{base64String}\"}}";



            byte[]         buffer  = Encoding.Default.GetBytes(jsonContent);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

            request.Method        = "post";
            request.KeepAlive     = true;
            request.ContentLength = buffer.Length;
            request.GetRequestStream().Write(buffer, 0, buffer.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            StreamReader reader        = new StreamReader(response.GetResponseStream(), Encoding.Default);
            string       contentString = reader.ReadToEnd();


            //HttpResponseMessage response;
            //using (HttpContent content = new StringContent(jsonContent))
            //{
            //    // Make the REST API call.
            //    response = await client.PostAsync(uri, content);
            //}


            //string contentString = await response.Content.ReadAsStringAsync();

            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new Exception(contentString);
            }

            // Get the JSON response.

            // Display the JSON response.
            Console.WriteLine("\nResponse:\n");
            Console.WriteLine(VisCommonClass.JsonPrettyPrint(contentString));

            return(JsonConvert.DeserializeObject <BaiduAnalyzeResult>(contentString));
        }
예제 #3
0
        private async void BaiduAnalyzeImage(string path)
        {
            var watch = System.Diagnostics.Stopwatch.StartNew();

            BaiduVisionAnalyze ana = new BaiduVisionAnalyze();

            ana.Key  = "vKHUR4T6BMeO3yTVwW3nR1NN";
            ana.SKey = "u8A17o87RD7Q35lU8qQKjxrDs1bguBrD";


            Task <BaiduAnalyzeResult> resTask = ana.UploadAndAnalyzeImage(path);
            BaiduAnalyzeResult        res     = await resTask;

            //watch end
            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            //write result
            this.richTextBox1.Text  = $"is animal:{res.IsAnimal()}\n";
            this.richTextBox1.Text += $"run with {imageListView1.SelectedItems[0].FileName}\n";
            this.richTextBox1.Text += $"used {elapsedMs} ms\n";
            this.richTextBox1.Text += VisCommonClass.JsonPrettyPrint(JsonConvert.SerializeObject(res));
            MessageBox.Show($"cost {elapsedMs}ms");
        }
 public async Task <IAnalyzeResult> UploadAndAnalyzeImage(string imageFilePath, params System.Enum[] features)
 {
     //getBase64
     byte[] imageBytes = VisCommonClass.GetImageAsByteArray(imageFilePath, maxSize: (int)(3.2 * 1024));
     return(await UploadAndAnalyzeImage(imageBytes));
 }
 public async Task <IAnalyzeResult> UploadAndAnalyzeImage(Bitmap image, params System.Enum[] features)
 {
     //getBase64
     byte[] imageBytes = VisCommonClass.GetImageAsByteArray(image);
     return(await UploadAndAnalyzeImage(imageBytes));
 }