Delen via


Zelfstudie: Vergelijkbare afbeeldingen als in vorige zoekopdrachten vinden met behulp van inzichttokens

Waarschuwing

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

Met de Visual Search-clientbibliotheek kunt u online afbeeldingen vinden op basis van eerdere zoekopdrachten die een ImageInsightsToken retourneren. Met deze toepassing wordt een ImageInsightsToken opgehaald en wordt het token gebruikt in een volgende zoekopdracht. Vervolgens wordt de ImageInsightsToken naar Bing verzonden en worden resultaten geretourneerd met onder meer Bing Search-URL's en URL's van vergelijkbare, online gevonden afbeeldingen.

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

Vereisten

  • Een versie van Visual Studio 2019.
  • Als u Linux/MacOS gebruikt, kunt u deze toepassing uitvoeren met behulp van Mono.
  • De pakketten NuGet Visual Search en Image Search.
    • 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 en het Microsoft.Azure.CognitiveServices.Search.ImageSearch-pakket. Als u de NuGet-pakketten installeert, worden ook de volgende onderdelen 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.

ImageInsightsToken ophalen uit de Bing Image Search-clientbibliotheek

Deze toepassing maakt gebruik van een ImageInsightsToken die is verkregen via de Bing Image Search-clientbibliotheek. Maak in een nieuwe C#-consoletoepassing een client om de API aan te roepen met behulp van ImageSearchClient(). Gebruik vervolgens SearchAsync() met uw query:

var client = new ImageSearchClient(new Microsoft.Azure.CognitiveServices.Search.ImageSearch.ApiKeyServiceClientCredentials(subKey));
var imageResults = client.Images.SearchAsync(query: "canadian rockies").Result;
Console.WriteLine("Search images for query \"canadian rockies\"");

Sla het eerste zoekresultaat op met behulp van imageResults.Value.First() en sla de ImageInsightsToken van de inzichten van de afbeelding op.

String insightTok = "None";
if (imageResults.Value.Count > 0)
{
    var firstImageResult = imageResults.Value.First();
    insightTok = firstImageResult.ImageInsightsToken;
}
else
{
    insightTok = "None found";
    Console.WriteLine("Couldn't find image results!");
}

Deze ImageInsightsToken wordt in een aanvraag naar Bing Visual Search verzonden.

ImageInsightsToken aan een Visual Search-aanvraag toevoegen

Geef de ImageInsightsToken op voor een Visual Search-aanvraag door een ImageInfo-object te maken op basis van de ImageInsightsToken in reacties van Bing Visual Search.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Bing Visual Search gebruiken om afbeeldingen te zoeken vanuit een ImageInsightsToken

Het VisualSearchRequest-object bevat informatie over de afbeelding in ImageInfo die moet worden gezocht. Met de VisualSearchMethodAsync()-methode worden de resultaten opgehaald. U hoeft geen binair bestand van de afbeelding op te geven, omdat de afbeelding door het token wordt gerepresenteerd.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;

De Visual Search-resultaten doorlopen

Visual Search-resultaten 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 bijvoorbeeld de ImageTag-objecten in visualSearchResults.Tags doorlopen en de ImageAction-tag erin ophalen. In het onderstaande voorbeeld worden de details van PagesIncluding-acties weergegeven:

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

PagesIncluding ActionTypes

Voor het ophalen van de werkelijke afbeeldings-URL's van actietypen 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);
        }
    }

Zie Afbeeldingen - Visual Search voor meer informatie over deze gegevenstypen.

Geretourneerde URL's

De volledige toepassing retourneert de volgende URL's:

ActionType URL
MoreSizes -> WebSearchUrl
VisualSearch -> WebSearchUrl
ImageById -> WebSearchUrl
RelatedSearches -> WebSearchUrl:
DocumentLevelSuggestions -> WebSearchUrl:
TopicResults -> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVVqvH-900&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fcanadian%2brocky&p=DevEx,5823.1
ImageResults -> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1

De typen TopicResults en ImageResults bevatten query's voor gerelateerde afbeeldingen, zoals hierboven weergegeven. De URL's zijn koppelingen naar Bing-zoekresultaten.

Volgende stappen