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 Recherche personnalisée NuGet installe également les assemblys suivants :- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- 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
Créer une ressource Azure
Commencez à utiliser l’API Recherche visuelle Bing en créant une des ressources Azure suivantes :
- Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
- Sélectionnez le niveau tarifaire
S9
.
- 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 :
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-WNHO89Kkw69AmIGe2MhlUp6MxR6YsJszgOuM5sVLs&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 PagesIncluding
ActionType
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);
}
}