Delen via


Zelfstudie: Vergelijkbare afbeeldingen zoeken uit eerdere zoekopdrachten met behulp van een afbeeldingsinzichttoken

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. Voor instructies voor het maken van nieuwe Azure-resources voor Bing, zie Een Bing Search-resource maken via de Azure Marketplace.

Met de Visual Search-clientbibliotheek kunt u online afbeeldingen zoeken uit eerdere zoekopdrachten die een ImageInsightsTokenretourneren. Deze toepassing haalt een ImageInsightsToken en gebruikt het token in een volgende zoekopdracht. Vervolgens wordt de ImageInsightsToken naar Bing verzonden en worden er resultaten geretourneerd die Bing Search-URL's en URL's van vergelijkbare afbeeldingen die online zijn gevonden bevatten.

De volledige broncode voor deze zelfstudie vindt u met aanvullende foutafhandeling en aantekeningen op GitHub.

Vereiste voorwaarden

  • Een versie van Visual Studio 2019.
  • Als u Linux/MacOS gebruikt, kunt u deze toepassing uitvoeren met Mono.
  • De NuGet Visual Search- en Image Search-pakketten.
    • 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, wordt ook het volgende 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.
  • Selecteer de S9 prijscategorie.

bron voor meerdere diensten

  • 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 ImageInsightsToken ophalen uit de Bing Image Search-clientbibliotheek

Deze toepassing maakt gebruik van een ImageInsightsToken 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(). SearchAsync() Gebruik deze vervolgens 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 vervolgens het inzicht van de afbeelding op met ImageInsightsToken.

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

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

ImageInsightsToken toevoegen aan een Visual Search-aanvraag

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

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Bing Visual Search gebruiken om afbeeldingen te zoeken uit een ImageInsightsToken

Het VisualSearchRequest object bevat informatie over de afbeelding in ImageInfo om te worden doorzocht. De VisualSearchMethodAsync() methode haalt de resultaten op. U hoeft geen binaire afbeelding op te geven, omdat de afbeelding wordt vertegenwoordigd door het token.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

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

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

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 Actietypen

Voor het ophalen van de werkelijke afbeeldings-URL's van actietypen is een cast vereist waarmee een ActionType als ImageModuleAction wordt gelezen, die een Data element met een lijst met waarden bevat. Elke waarde is de URL van een afbeelding. Het volgende cast het actietype PagesIncluding naar ImageModuleAction en leest de waarden:

    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:

Actietype URL
MoreSizes -> WebZoekUrl
VisualSearch -> WebSearchUrl
ImageById -> WebSearchURL
GerelateerdeZoeken -> WebZoekUrl:
DocumentNiveauSuggesties -> WebZoekUrl:
OnderwerpResultaten -> WebZoekUrl 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
AfbeeldingResultaten -> WebZoekUrl 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

Zoals hierboven wordt weergegeven, bevatten de typen TopicResults en ImageResults query's voor gerelateerde afbeeldingen. De URL's zijn gekoppeld aan zoekresultaten van Bing.

Volgende stappen