Tutoriel : Rogner une image avec le SDK Recherche visuelle Bing pour C#

Avertissement

Le 30 octobre 2020, les API de recherche Bing sont passées des services Azure AI aux services de recherche Bing. Cette documentation est fournie à des fins de référence uniquement. Pour accéder à la documentation mise à jour, consultez la documentation de l’API Recherche Bing. Pour obtenir des instructions sur la création de nouvelles ressources Azure pour Recherche Bing, consultez Créer une ressource Recherche Bing à l’aide de Place de marché Azure.

Le SDK Recherche visuelle Bing vous permet de rogner une image avant de rechercher des images en ligne similaires. Cette application rogne une seule personne à partir d’une image contenant plusieurs personnes, puis retourne les résultats de recherche contenant des images similaires disponibles en ligne.

Le code source complet de cette application est disponible sur GitHub avec une gestion des erreurs et des annotations supplémentaires.

Le didacticiel illustre les actions suivantes :

  • Envoyer une requête à l’aide du SDK Recherche visuelle Bing
  • Rogner une zone d’image pour effectuer une recherche avec Recherche visuelle Bing
  • Recevoir et gérer la réponse
  • Rechercher les URL d’éléments d’action dans la réponse

Prérequis

  • N’importe quelle édition de Visual Studio 2019.
  • Si vous utilisez Linux/MacOS, cette application peut être exécutée à l’aide de Mono.
  • Package NuGet Custom Search installé.
    • Dans l’Explorateur de solutions de Visual Studio, cliquez avec le bouton droit sur votre projet et sélectionnez Gérer les packages NuGet dans le menu. Installez le package Microsoft.Azure.CognitiveServices.Search.CustomSearch. L’installation du package NuGet Custom Search installe aussi les assemblys suivants :
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Créer une ressource Azure

Commencez à utiliser l’API Recherche visuelle Bing en créant une des ressources Azure suivantes :

Ressource Recherche Bing v7

  • Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
  • Sélectionnez le niveau tarifaire S9.

Ressource multiservice

  • Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
  • Utilisez la même clé et le même point de terminaison pour vos applications, sur plusieurs services Azure AI.

Spécifier la zone d'image à rogner

Cette application rogne une zone de cette image de l’Équipe des hauts dirigeants de Microsoft. Cette zone rognée est définie à l’aide des coordonnées des coins supérieur gauche et inférieur droit, représentées sous forme de pourcentage de la totalité de l’image :

Équipe des hauts dirigeants de Microsoft

Cette image est rognée par la création d’un objet ImageInfo à partir de la zone de rognage et par le chargement de l’objet ImageInfo dans un VisualSearchRequest. L’objet ImageInfo inclut également l’URL de l’image :

CropArea CropArea = new CropArea(top: (float)0.01, bottom: (float)0.30, left: (float)0.01, right: (float)0.20);
string imageURL = "https://learn.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);

Rechercher des images similaires à la zone de rognage

La variable VisualSearchRequest contient des informations sur la zone de rognage de l’image et son URL. La méthode VisualSearchMethodAsync() obtient les résultats :

Console.WriteLine("\r\nSending visual search request with knowledgeRequest that contains URL and crop area");
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result;

Obtenir les données d’URL à partir de ImageModuleAction

Les résultats de Recherche visuelle Bing sont des objets ImageTag. Chaque balise contient une liste d’objets ImageAction. Chaque ImageAction contient un champ Data, qui est une liste de valeurs variant en fonction du type d’action.

Vous pouvez imprimer les différents types avec le code suivant :

Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl);

L’application complète retourne :

ActionType URL
PagesIncluding WebSearchURL
MoreSizes WebSearchURL
VisualSearch WebSearchURL
ImageById WebSearchURL
RelatedSearches WebSearchURL
Entity -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=BvvDoRtmZ35Xc_UZE4lZx6_eg7FHgcCkigU1D98NHQo&v=1&r=https%3a%2f%2fwww.bing.com%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5380.1
TopicResults -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=3QGtxPb3W9LemuHRxAlW4CW7XN4sPkUYCUynxAqI9zQ&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fnadella%2bsatya&p=DevEx,5382.1
ImageResults -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=l-WNHO89Kkw69AmIGe2MhlUp6MxR6YsJszgOuM5sVL&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5384.1

Comme indiqué ci-dessus, l’ActionType Entity contient une requête de recherche Bing qui retourne des informations sur une personne, un endroit ou une chose reconnaissable. Les types TopicResults et ImageResults contiennent des requêtes pour les images associées. Les URL dans la liste sont liées aux résultats de recherche Bing.

Obtenir les URL pour les images PagesIncludingActionType

L’obtention des URL des images réelles nécessite un cast qui lit un ActionType comme ImageModuleAction, qui contient un élément Data avec une liste de valeurs. Chaque valeur est l’URL d’une image. Le code suivant convertit le type d’action PagesIncluding en ImageModuleAction et lit les valeurs :

    if (i.ActionType == "PagesIncluding")
    {
        foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
        {
            Console.WriteLine("ContentURL: " + o.ContentUrl);
        }
    }

Étapes suivantes

Voir aussi

Qu’est-ce que l’API Recherche visuelle Bing ?