Självstudie: Hitta liknande bilder från tidigare sökningar med hjälp av en bildinsiktstoken

Varning

Den 30 oktober 2020 flyttade Bing-sökning API:er från Azure AI-tjänster till Bing-sökning Services. Den här dokumentationen tillhandahålls endast som referens. Uppdaterad dokumentation finns i dokumentationen för API:et för Bing-sökning. Anvisningar om hur du skapar nya Azure-resurser för Bing-sökning finns i Skapa en Bing-sökning resurs via Azure Marketplace.

Med klientbiblioteket för visuell sökning kan du hitta bilder online från tidigare sökningar som returnerar en ImageInsightsToken. Det här programmet hämtar en ImageInsightsToken och använder token i en efterföljande sökning. Den skickar ImageInsightsToken sedan till Bing och returnerar resultat som innehåller Bing-sökning-URL:er och URL:er för liknande bilder som finns online.

Den fullständiga källkoden för den här självstudien finns med ytterligare felhantering och anteckningar på GitHub.

Förutsättningar

  • Alla utgåvor av Visual Studio 2019.
  • Om du använder Linux/MacOS kan du köra det här programmet med mono.
  • Paketen NuGet Visual Search och Image Search.
    • I Solution Explorer i Visual Studio högerklickar du på projektet och väljer Hantera NuGet-paket på menyn. Microsoft.Azure.CognitiveServices.Search.CustomSearch Installera paketet och Microsoft.Azure.CognitiveServices.Search.ImageSearch paketet. Installering av NuGet-paketet installerar även följande:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Skapa en Azure-resurs

Börja använda API:et för visuell sökning i Bing genom att skapa någon av följande Azure-resurser:

Bing-sökning v7-resurs

  • Tillgänglig via Azure Portal tills du tar bort resursen.
  • S9 Välj prisnivå.

Resurs för flera tjänster

  • Tillgänglig via Azure Portal tills du tar bort resursen.
  • Använd samma nyckel och slutpunkt för dina program i flera Azure AI-tjänster.

Hämta ImageInsightsToken från klientbiblioteket för bildsökning i Bing

Det här programmet använder en ImageInsightsToken som hämtas via klientbiblioteket för bildsökning i Bing. I ett nytt C#-konsolprogram skapar du en klient som anropar API:et med .ImageSearchClient() SearchAsync() Använd sedan med din fråga:

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

Lagra det första sökresultatet med hjälp av imageResults.Value.First()och lagra sedan bildinsiktens 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!");
}

Detta ImageInsightsToken skickas till visuell sökning i Bing i en begäran.

Lägg till ImageInsightsToken i en begäran om visuell sökning

ImageInsightsToken Ange för en begäran om visuell sökning genom att skapa ett ImageInfo objekt från innehållet ImageInsightsToken i svar från visuell sökning i Bing.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Använda visuell sökning i Bing för att hitta bilder från en ImageInsightsToken

Objektet VisualSearchRequest innehåller information om bilden i ImageInfo som ska sökas igenom. VisualSearchMethodAsync()-metoden hämtar resultatet. Du behöver inte ange en avbildningsbinär eftersom avbildningen representeras av token.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

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

Iterera genom visuella sökresultat

Resultaten från Visuell sökning är ImageTag-objekt. Varje tagg innehåller en lista med ImageAction-objekt. Var och ImageAction en innehåller ett Data fält, som är en lista med värden som är beroende av typen av åtgärd. Du kan iterera genom objekten ImageTag i visualSearchResults.Tags, till exempel, och hämta taggen ImageAction i den. Exemplet nedan skriver ut information om PagesIncluding åtgärder:

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

SidorInkludera ActionTypes

För att hämta de faktiska avbildnings-URL:erna från åtgärdstyper krävs en gjutning som läser ett ActionType som ImageModuleAction, som innehåller ett Data element med en lista med värden. Varje värde är URL:en till en bild. Följande kastar åtgärdstypen PagesIncluding till ImageModuleAction och läser värdena:

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

Mer information om dessa datatyper finns i Bilder – Visuell sökning.

Returnerade URL:er

Det fullständiga programmet returnerar följande URL:er:

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

Som du ser ovan innehåller typerna TopicResults och ImageResults frågor för relaterade bilder. URL:erna länkar till sökresultaten i Bing.

Nästa steg