Delen via


Zelfstudie: Een afbeelding bijsnijden met de Bing Visual Search SDK voor C#

Waarschuwing

Op 30 oktober 2020 zijn de Bing Search-API's verplaatst van Azure AI-services naar Bing Search Services. Deze documentatie wordt alleen ter referentie verstrekt. Zie de bing zoek-API-documentatie voor bijgewerkte documentatie. Zie Een Bing Search-resource maken via Azure Marketplace voor instructies voor het maken van nieuwe Azure-resources voor Bing Search.

Met de Bing Visual Search-SDK kunt u een afbeelding bijsnijden voordat u vergelijkbare onlineafbeeldingen kunt vinden. Met deze toepassing wordt één persoon uit een afbeelding met meerdere personen gesneden. Vervolgens worden de zoekresultaten geretourneerd met vergelijkbare afbeeldingen die online zijn gevonden.

De volledige broncode voor deze toepassing is beschikbaar op GitHub met extra foutafhandeling en aantekeningen.

In deze zelfstudie ziet u hoe u de volgende zaken kunt uitvoeren:

  • Een aanvraag verzenden met de Bing Visual Search-SDK
  • Het deel van een afbeelding dat u zoekt, bijsnijden met Bing Visual Search
  • Het antwoord ontvangen en verwerken
  • De URL's van actie-items in het antwoord zoeken

Vereisten

  • Een versie van Visual Studio 2019.
  • Als u Linux/MacOS gebruikt, kan deze toepassing worden uitgevoerd met behulp van Mono.
  • Het NuGet-pakket Custom Search is geïnstalleerd.
    • Klik in Solution Explorer in Visual Studio met de rechtermuisknop op uw project en selecteer in het menu NuGet-pakketten beheren. Installeer het Microsoft.Azure.CognitiveServices.Search.CustomSearch-pakket. Als u het NuGet Custom Search-pakket installeert, worden ook de volgende assembly's geïnstalleerd:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Een Azure-resource maken

Begin met het gebruik van de Bing Visual Search-API door een van de volgende Azure-resources te maken:

Bing Search v7-resource

  • Beschikbaar via de Azure-portal totdat u de resource verwijdert.
  • Controleer de prijscategorie S9.

Resource met meerdere services

  • Beschikbaar via de Azure-portal totdat u de resource verwijdert.
  • Gebruik dezelfde sleutel en hetzelfde eindpunt voor uw toepassingen, in meerdere Azure AI-services.

Het bij te snijden gedeelte van de afbeelding opgeven

Met deze toepassing wordt een deel van deze afbeelding van het seniormanagementteam van Microsoft bijgesneden. Dit bij te snijden gedeelte wordt gedefinieerd aan de hand van de linker- en rechtercoördinaten, uitgedrukt als een percentage van de hele afbeelding:

Senior leidinggevenden bij Microsoft

Deze afbeelding wordt bijgesneden door een ImageInfo-object te maken op basis van het bij te snijden gedeelte en het ImageInfo-object in een VisualSearchRequest te laden. Het ImageInfo-object bevat ook de URL van de afbeelding:

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);

Zoeken naar afbeeldingen die lijken op het bij te snijden gedeelte

De variabele VisualSearchRequest bevat informatie over het bij te snijden deel in de afbeelding en de bijbehorende URL. Met de VisualSearchMethodAsync()-methode worden de resultaten opgehaald:

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

De URL-gegevens ophalen van ImageModuleAction

Resultaten van Bing Visual Search zijn ImageTag-objecten. Elke tag bevat een lijst met ImageAction-objecten. Elk object van het type ImageAction bevat een Data-veld. Dit is een lijst met waarden die afhankelijk zijn van het type actie.

U kunt de verschillende typen afdrukken met de volgende code:

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

De volledige toepassing retourneert:

ActionType URL
PagesIncluding WebSearchURL
MoreSizes WebSearchURL
VisualSearch WebSearchURL
ImageById WebSearchURL
RelatedSearches WebSearchURL
Entiteit -> 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

Zoals hierboven weergegeven, bevat Entity ActionType een Bing-zoekquery waarmee informatie wordt geretourneerd over een herkenbare persoon, een herkenbare plaats of een herkenbaar ding. De typen TopicResults en ImageResults bevatten zoekopdrachten naar gerelateerde afbeeldingen. De URL's in de lijst zijn koppelingen naar Bing-zoekresultaten.

URL's voor PagesIncluding ActionType-afbeeldingen ophalen

Voor het ophalen van de werkelijke afbeeldings-URL's is een cast vereist die een ActionType leest als ImageModuleAction, die een Data-element met een waardelijst bevat. Elke waarde is de URL van een afbeelding. De volgende code cast het actietype PagesIncluding naar ImageModuleAction en leest de waarde:

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

Volgende stappen

Zie ook

Wat is de Bing Visual Search-API?