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 ochMicrosoft.Azure.CognitiveServices.Search.ImageSearch
paketet. Installering av NuGet-paketet installerar även följande:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- I Solution Explorer i Visual Studio högerklickar du på projektet och väljer Hantera NuGet-paket på menyn.
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:
- Tillgänglig via Azure Portal tills du tar bort resursen.
-
S9
Välj prisnivå.
- 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.