public static void VisualSearchImageBinary(string subscriptionKey) { var client = new VisualSearchAPI(new ApiKeyServiceClientCredentials(subscriptionKey)); try { using (FileStream stream = new FileStream(Path.Combine("TestImages", "image.jpg"), FileMode.Open)) { // The knowledgeRequest parameter is not required if an image binary is passed in the request body var visualSearchResults = client.Images.VisualSearchMethodAsync(image: stream, knowledgeRequest: (string)null).Result; Console.WriteLine("Search visual search request with binary of dog image"); if (visualSearchResults == null) { Console.WriteLine("No visual search result data."); } else { // Visual Search results if (visualSearchResults.Image?.ImageInsightsToken != null) { Console.WriteLine($"Uploaded image insights token: {visualSearchResults.Image.ImageInsightsToken}"); } else { Console.WriteLine("Couldn't find image insights token!"); } // List of tags if (visualSearchResults.Tags.Count > 0) { var firstTagResult = visualSearchResults.Tags.First(); Console.WriteLine($"Visual search tag count: {visualSearchResults.Tags.Count}"); // List of actions in first tag if (firstTagResult.Actions.Count > 0) { var firstActionResult = firstTagResult.Actions.First(); Console.WriteLine($"First tag action count: {firstTagResult.Actions.Count}"); Console.WriteLine($"First tag action type: {firstActionResult.ActionType}"); } else { Console.WriteLine("Couldn't find tag actions!"); } } else { Console.WriteLine("Couldn't find image tags!"); } } } } catch (Exception ex) { Console.WriteLine("Encountered exception. " + ex.Message); } }
public static void VisualSearchImageBinaryWithCropArea(string subscriptionKey) { var client = new VisualSearchAPI(new Microsoft.Azure.CognitiveServices.Search.VisualSearch.ApiKeyServiceClientCredentials(subscriptionKey)); try { CropArea CropArea = new CropArea(top: (float)0.01, bottom: (float)0.30, left: (float)0.01, right: (float)0.20); // The ImageInfo struct specifies the crop area in the image and the URL of the larger image. string imageURL = "https://docs.microsoft.com/azure/cognitive-services/bing-visual-search/media/ms_srleaders.jpg"; ImageInfo imageInfo = new ImageInfo(cropArea: CropArea, url: imageURL); VisualSearchRequest visualSearchRequest = new VisualSearchRequest(imageInfo: imageInfo); var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result; Console.WriteLine("\r\nVisual search request with image from URL and crop area combined in knowledgeRequest"); if (visualSearchResults == null) { Console.WriteLine("No visual search result data."); } else { // List of tags if (visualSearchResults.Tags.Count > 0) { foreach (ImageTag t in visualSearchResults.Tags) { foreach (ImageAction i in t.Actions) { Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl); if (i.ActionType == "PagesIncluding") { foreach (ImageObject o in (i as ImageModuleAction).Data.Value) { Console.WriteLine("ContentURL: " + o.ContentUrl); } } } } } else { Console.WriteLine("Couldn't find image tags!"); } } } catch (Exception ex) { Console.WriteLine("Encountered exception. " + ex.Message); } }
// This method will get Visual Search results from an imageInsightsToken obtained from the return value of the ImageResults method. // The method includes imageInsightsToken the in a knowledgeRequest parameter, along with a cropArea object. // It prints out the imageInsightsToken uploaded in the request. // Finally the example prints URLs of images found using the imageInsightsToken. public static void VisualSearchInsightsToken(string subscriptionKey, string insightsTok) { var client = new VisualSearchAPI(new Microsoft.Azure.CognitiveServices.Search.VisualSearch.ApiKeyServiceClientCredentials(subscriptionKey)); try { // The image can be specified via an insights token, in the ImageInfo object. ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok); // An image binary is not necessary here, as the image is specified by insights token. VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo); var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result; Console.WriteLine("\r\nVisual search request with imageInsightsToken and knowledgeRequest"); if (visualSearchResults == null) { Console.WriteLine("No visual search result data."); } else { // Visual Search results if (visualSearchResults.Image?.ImageInsightsToken != null) { Console.WriteLine($"Uploaded image insights token: {insightsTok}"); } else { Console.WriteLine("Couldn't find image insights token!"); } if (visualSearchResults.Tags.Count > 0) { // List of tags foreach (ImageTag t in visualSearchResults.Tags) { foreach (ImageAction i in t.Actions) { Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " WebSearchURL: " + i.WebSearchUrl); if (i.ActionType == "PagesIncluding") { foreach (ImageObject o in (i as ImageModuleAction).Data.Value) { Console.WriteLine("ContentURL: " + o.ContentUrl); } } } } } else { Console.WriteLine("Couldn't find image tags!"); } } } catch (Exception ex) { Console.WriteLine("Encountered exception. " + ex.Message); } }
public static void VisualSearchImageBinaryWithCropArea(string subscriptionKey) { var client = new VisualSearchAPI(new ApiKeyServiceClientCredentials(subscriptionKey)); try { using (FileStream stream = new FileStream(Path.Combine("TestImages", "image.jpg"), FileMode.Open)) { // The ImageInfo struct contains a crop area specifying a region to crop in the uploaded image CropArea CropArea = new CropArea(top: (float)0.1, bottom: (float)0.5, left: (float)0.1, right: (float)0.9); ImageInfo ImageInfo = new ImageInfo(cropArea: CropArea); VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(imageInfo: ImageInfo); // The knowledgeRequest here holds additional information about the image, which is passed in in binary form var visualSearchResults = client.Images.VisualSearchMethodAsync(image: stream, knowledgeRequest: VisualSearchRequest).Result; Console.WriteLine("Search visual search request with binary of dog image"); if (visualSearchResults == null) { Console.WriteLine("No visual search result data."); } else { // Visual Search results if (visualSearchResults.Image?.ImageInsightsToken != null) { Console.WriteLine($"Uploaded image insights token: {visualSearchResults.Image.ImageInsightsToken}"); } else { Console.WriteLine("Couldn't find image insights token!"); } // List of tags if (visualSearchResults.Tags.Count > 0) { var firstTagResult = visualSearchResults.Tags.First(); Console.WriteLine($"Visual search tag count: {visualSearchResults.Tags.Count}"); // List of actions in first tag if (firstTagResult.Actions.Count > 0) { var firstActionResult = firstTagResult.Actions.First(); Console.WriteLine($"First tag action count: {firstTagResult.Actions.Count}"); Console.WriteLine($"First tag action type: {firstActionResult.ActionType}"); } else { Console.WriteLine("Couldn't find tag actions!"); } } else { Console.WriteLine("Couldn't find image tags!"); } } } } catch (Exception ex) { Console.WriteLine("Encountered exception. " + ex.Message); } }
public static void VisualSearchUrlWithJson(string subscriptionKey) { var client = new VisualSearchAPI(new ApiKeyServiceClientCredentials(subscriptionKey)); try { /* * The visual search request can be passed in as a JSON string * The image is specified via URL in the ImageInfo object, along with a crop area as shown below: * { * "imageInfo": { * "url": "https://images.unsplash.com/photo-1512546148165-e50d714a565a?w=600&q=80", * "cropArea": { * "top": 0.1, * "bottom": 0.5, * "left": 0.1, * "right": 0.9 * } * }, * "knowledgeRequest": { * "filters": { * "site": "www.bing.com" * } * } * } */ var VisualSearchRequestJSON = "{\"imageInfo\":{\"url\":\"https://images.unsplash.com/photo-1512546148165-e50d714a565a?w=600&q=80\",\"cropArea\":{\"top\":0.1,\"bottom\":0.5,\"left\":0.1,\"right\":0.9}},\"knowledgeRequest\":{\"filters\":{\"site\":\"www.bing.com\"}}}"; // An image binary is not necessary here, as the image is specified via URL var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequestJSON).Result; Console.WriteLine("Search visual search request with url of dog image"); if (visualSearchResults == null) { Console.WriteLine("No visual search result data."); } else { // Visual Search results if (visualSearchResults.Image?.ImageInsightsToken != null) { Console.WriteLine($"Uploaded image insights token: {visualSearchResults.Image.ImageInsightsToken}"); } else { Console.WriteLine("Couldn't find image insights token!"); } // List of tags if (visualSearchResults.Tags.Count > 0) { var firstTagResult = visualSearchResults.Tags.First(); Console.WriteLine($"Visual search tag count: {visualSearchResults.Tags.Count}"); // List of actions in first tag if (firstTagResult.Actions.Count > 0) { var firstActionResult = firstTagResult.Actions.First(); Console.WriteLine($"First tag action count: {firstTagResult.Actions.Count}"); Console.WriteLine($"First tag action type: {firstActionResult.ActionType}"); } else { Console.WriteLine("Couldn't find tag actions!"); } } else { Console.WriteLine("Couldn't find image tags!"); } } } catch (Exception ex) { Console.WriteLine("Encountered exception. " + ex.Message); } }
public static void VisualSearchInsightsTokenWithCropArea(string subscriptionKey) { var client = new VisualSearchAPI(new ApiKeyServiceClientCredentials(subscriptionKey)); try { // The image can be specified via an insights token, in the ImageInfo object var ImageInsightsToken = "bcid_113F29C079F18F385732D8046EC80145*ccid_oV/QcH95*mid_687689FAFA449B35BC11A1AE6CEAB6F9A9B53708*thid_R.113F29C079F18F385732D8046EC80145"; // An optional crop area can be passed in to define a region of interest in the image CropArea CropArea = new CropArea(top: (float)0.1, bottom: (float)0.5, left: (float)0.1, right: (float)0.9); ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: ImageInsightsToken, cropArea: CropArea); // An image binary is not necessary here, as the image is specified via insights token VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(imageInfo: ImageInfo); var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result; Console.WriteLine("Search visual search request with url of dog image"); if (visualSearchResults == null) { Console.WriteLine("No visual search result data."); } else { // Visual Search results if (visualSearchResults.Image?.ImageInsightsToken != null) { Console.WriteLine($"Uploaded image insights token: {visualSearchResults.Image.ImageInsightsToken}"); } else { Console.WriteLine("Couldn't find image insights token!"); } // List of tags if (visualSearchResults.Tags.Count > 0) { var firstTagResult = visualSearchResults.Tags.First(); Console.WriteLine($"Visual search tag count: {visualSearchResults.Tags.Count}"); // List of actions in first tag if (firstTagResult.Actions.Count > 0) { var firstActionResult = firstTagResult.Actions.First(); Console.WriteLine($"First tag action count: {firstTagResult.Actions.Count}"); Console.WriteLine($"First tag action type: {firstActionResult.ActionType}"); } else { Console.WriteLine("Couldn't find tag actions!"); } } else { Console.WriteLine("Couldn't find image tags!"); } } } catch (Exception ex) { Console.WriteLine("Encountered exception. " + ex.Message); } }
public static void VisualSearchUrlWithFilters(string subscriptionKey) { var client = new VisualSearchAPI(new ApiKeyServiceClientCredentials(subscriptionKey)); try { // The image can be specified via URL, in the ImageInfo object var ImageUrl = "https://images.unsplash.com/photo-1512546148165-e50d714a565a?w=600&q=80"; ImageInfo ImageInfo = new ImageInfo(url: ImageUrl); // Optional filters inside the knowledgeRequest will restrict similar products and images to certain domains Filters Filters = new Filters(site: "www.bing.com"); KnowledgeRequest KnowledgeRequest = new KnowledgeRequest(filters: Filters); // An image binary is not necessary here, as the image is specified via URL VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(imageInfo: ImageInfo, knowledgeRequest: KnowledgeRequest); var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result; Console.WriteLine("Search visual search request with url of dog image"); if (visualSearchResults == null) { Console.WriteLine("No visual search result data."); } else { // Visual Search results if (visualSearchResults.Image?.ImageInsightsToken != null) { Console.WriteLine($"Uploaded image insights token: {visualSearchResults.Image.ImageInsightsToken}"); } else { Console.WriteLine("Couldn't find image insights token!"); } // List of tags if (visualSearchResults.Tags.Count > 0) { var firstTagResult = visualSearchResults.Tags.First(); Console.WriteLine($"Visual search tag count: {visualSearchResults.Tags.Count}"); // List of actions in first tag if (firstTagResult.Actions.Count > 0) { var firstActionResult = firstTagResult.Actions.First(); Console.WriteLine($"First tag action count: {firstTagResult.Actions.Count}"); Console.WriteLine($"First tag action type: {firstActionResult.ActionType}"); } else { Console.WriteLine("Couldn't find tag actions!"); } } else { Console.WriteLine("Couldn't find image tags!"); } } } catch (Exception ex) { Console.WriteLine("Encountered exception. " + ex.Message); } }