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 hetMicrosoft.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
- Klik in Solution Explorer in Visual Studio met de rechtermuisknop op uw project en selecteer in het menu NuGet-pakketten beheren. Installeer het
Een Azure-resource maken
Begin met het gebruik van de Bing Visual Search-API door een van de volgende Azure-resources te maken:
- 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.