Samouczek: znajdowanie podobnych obrazów z poprzednich wyszukiwań przy użyciu tokenu szczegółowych informacji o obrazie
Ostrzeżenie
30 października 2020 r. interfejsy API Wyszukiwanie Bing zostały przeniesione z usług Azure AI do usług Wyszukiwanie Bing Services. Ta dokumentacja jest udostępniana tylko do celów referencyjnych. Aby uzyskać zaktualizowaną dokumentację, zobacz dokumentację interfejsu API wyszukiwania Bing. Aby uzyskać instrukcje dotyczące tworzenia nowych zasobów platformy Azure na potrzeby wyszukiwania Bing, zobacz Tworzenie zasobu Wyszukiwanie Bing za pośrednictwem Azure Marketplace.
Biblioteka klienta wyszukiwania wizualnego umożliwia wyszukiwanie obrazów w trybie online z poprzednich wyszukiwań, które zwracają element ImageInsightsToken
. Ta aplikacja pobiera ImageInsightsToken
token i używa go w kolejnym wyszukiwaniu. Następnie wysyła ImageInsightsToken
element do usługi Bing i zwraca wyniki, które zawierają Wyszukiwanie Bing adresy URL i adresy URL podobnych obrazów znalezionych w trybie online.
Pełny kod źródłowy tego samouczka można znaleźć z dodatkową obsługą błędów i adnotacjami w usłudze GitHub.
Wymagania wstępne
- Dowolna wersja programu Visual Studio 2019.
- Jeśli używasz systemu Linux/MacOS, możesz uruchomić tę aplikację przy użyciu platformy Mono.
- Pakiety NuGet Visual Search i Image Search.
- W Eksplorator rozwiązań w programie Visual Studio kliknij prawym przyciskiem myszy projekt i wybierz polecenie Zarządzaj pakietami NuGet z menu.
Microsoft.Azure.CognitiveServices.Search.CustomSearch
Zainstaluj pakiet iMicrosoft.Azure.CognitiveServices.Search.ImageSearch
pakiet. Zainstalowanie pakietu NuGet powoduje także zainstalowanie następujących elementów:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- W Eksplorator rozwiązań w programie Visual Studio kliknij prawym przyciskiem myszy projekt i wybierz polecenie Zarządzaj pakietami NuGet z menu.
Tworzenie zasobu platformy Azure
Zacznij korzystać z interfejsu API wyszukiwania wizualnego Bing, tworząc jeden z następujących zasobów platformy Azure:
zasób Wyszukiwanie Bing w wersji 7
- Dostępne za pośrednictwem Azure Portal do momentu usunięcia zasobu.
- Wybierz warstwę cenową
S9
.
- Dostępne za pośrednictwem Azure Portal do momentu usunięcia zasobu.
- Użyj tego samego klucza i punktu końcowego dla aplikacji w wielu usługach azure AI.
Pobieranie tokenu ImageInsightsToken z biblioteki klienta wyszukiwania obrazów Bing
Ta aplikacja używa elementu uzyskanego ImageInsightsToken
za pośrednictwem biblioteki klienta wyszukiwania obrazów Bing. W nowej aplikacji konsolowej języka C# utwórz klienta w celu wywołania interfejsu API przy użyciu polecenia ImageSearchClient()
. Następnie użyj polecenia SearchAsync()
z zapytaniem:
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\"");
Zapisz pierwszy wynik wyszukiwania przy użyciu polecenia imageResults.Value.First()
, a następnie zapisz szczegółowe informacje o obrazie 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!");
}
Jest to ImageInsightsToken
wysyłane do wyszukiwania wizualnego Bing w żądaniu.
Dodawanie tokenu ImageInsightsToken do żądania wyszukiwania wizualnego
ImageInsightsToken
Określ wartość dla żądania wyszukiwania wizualnego, tworząc ImageInfo
obiekt na podstawie ImageInsightsToken
zawartych w odpowiedziach z wyszukiwania wizualnego Bing.
ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);
Znajdowanie obrazów z tokenu ImageInsightsToken za pomocą wyszukiwania wizualnego Bing
Obiekt VisualSearchRequest
zawiera informacje o obrazie do ImageInfo
przeszukania. Metoda VisualSearchMethodAsync()
pobiera wyniki. Nie musisz podawać pliku binarnego obrazu, ponieważ obraz jest reprezentowany przez token.
VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;
Iterowanie wyników wyszukiwania wizualnego
Wyniki wyszukiwania wizualnego to obiekty ImageTag
. Każdy tag zawiera listę obiektów ImageAction
. Każdy ImageAction
zawiera Data
pole, które jest listą wartości, które zależą od typu akcji. Można iterować po ImageTag
obiektach w visualSearchResults.Tags
programie , na przykład i pobrać ImageAction
tag w nim. Poniższy przykład wyświetla szczegóły PagesIncluding
akcji:
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
Pobieranie rzeczywistych adresów URL obrazów z typów akcji wymaga rzutowania, które odczytuje element ActionType
jako ImageModuleAction
, który zawiera Data
element z listą wartości. Każda wartość to adres URL obrazu. Następujące rzutowanie PagesIncluding
typu akcji na ImageModuleAction
i odczytuje wartości:
if (i.ActionType == "PagesIncluding")
{
foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}
Aby uzyskać więcej informacji o tych typach danych, zobacz Images - Visual Search (Obrazy — wyszukiwanie wizualne).
Zwrócone adresy URL
Kompletna aplikacja zwraca następujące adresy URL:
ActionType | Adres 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=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVqvH-900&v=1&r=https%3a%2f%2fww.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%2fww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1 |
Jak pokazano powyżej, TopicResults
typy i ImageResults
zawierają zapytania dotyczące powiązanych obrazów. Adresy URL łączą się z wynikami wyszukiwania Bing.