Samouczek: przycinanie obrazu przy użyciu zestawu SDK wyszukiwania wizualnego Bing dla języka C#
Ostrzeżenie
30 października 2020 r. interfejsy API wyszukiwania Bing zostały przeniesione z usług Azure AI do usług wyszukiwania Bing. 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 wyszukiwania Bing za pośrednictwem witryny Azure Marketplace.
Zestaw SDK wyszukiwania wizualnego Bing umożliwia przycinanie obrazu przed znalezieniem podobnych obrazów online. Ta aplikacja przycina pojedynczą osobę z obrazu zawierającego kilka osób, a następnie zwraca wyniki wyszukiwania zawierające podobne obrazy znalezione w trybie online.
Pełny kod źródłowy tej aplikacji jest dostępny z dodatkową obsługą błędów i adnotacjami w usłudze GitHub.
W tym samouczku pokazano, jak:
- Wysyłanie żądania przy użyciu zestawu SDK wyszukiwania wizualnego Bing
- Przycinanie obszaru obrazu do wyszukiwania za pomocą wyszukiwania wizualnego Bing
- Odbieranie i obsługa odpowiedzi
- Znajdowanie adresów URL elementów akcji w odpowiedzi
Wymagania wstępne
- Dowolna wersja programu Visual Studio 2019.
- Jeśli używasz systemu Linux/MacOS, możesz uruchomić tę aplikację przy użyciu środowiska Mono.
- Zainstalowany pakiet NuGet Custom Search.
- W Eksplorator rozwiązań w programie Visual Studio kliknij prawym przyciskiem myszy projekt i wybierz polecenie Zarządzaj pakietami NuGet z menu. Zainstaluj pakiet
Microsoft.Azure.CognitiveServices.Search.CustomSearch
. Zainstalowanie pakietu NuGet Custom Search instaluje również następujące zestawy:- 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. Zainstaluj pakiet
Tworzenie zasobu platformy Azure
Rozpocznij korzystanie z interfejsu API wyszukiwania wizualnego Bing, tworząc jeden z następujących zasobów platformy Azure:
Zasób wyszukiwania Bing w wersji 7
- Dostępne za pośrednictwem witryny Azure Portal do momentu usunięcia zasobu.
- Wybierz warstwę cenową
S9
.
- Dostępne za pośrednictwem witryny Azure Portal do momentu usunięcia zasobu.
- Użyj tego samego klucza i punktu końcowego dla aplikacji w wielu usługach azure AI.
Określanie obszaru przycinania obrazu
Ta aplikacja przycina obszar tego obrazu zespołu kierownictwa wyższego szczebla firmy Microsoft. Ten obszar przycinania jest definiowany przy użyciu współrzędnych w lewym górnym i dolnym rogu, reprezentowanych jako procent całego obrazu:
Ten obraz jest przycinany przez utworzenie ImageInfo
obiektu z obszaru przycinania i załadowanie ImageInfo
obiektu do VisualSearchRequest
obiektu . Obiekt ImageInfo
zawiera również adres URL obrazu:
CropArea CropArea = new CropArea(top: (float)0.01, bottom: (float)0.30, left: (float)0.01, right: (float)0.20);
string imageURL = "https://learn.microsoft.com/azure/cognitive-services/Bing-visual-search/media/ms_srleaders.jpg";
ImageInfo imageInfo = new ImageInfo(cropArea: CropArea, url: imageURL);
VisualSearchRequest visualSearchRequest = new VisualSearchRequest(imageInfo: imageInfo);
Wyszukiwanie obrazów podobnych do obszaru przycinania
Zmienna VisualSearchRequest
zawiera informacje o obszarze przycinania obrazu i jego adresie URL. Metoda VisualSearchMethodAsync()
pobiera wyniki:
Console.WriteLine("\r\nSending visual search request with knowledgeRequest that contains URL and crop area");
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result;
Pobieranie danych adresu URL z ImageModuleAction
Wyniki wyszukiwania wizualnego Bing to ImageTag
obiekty. 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.
Różne typy można wydrukować przy użyciu następującego kodu:
Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl);
Kompletna aplikacja zwraca:
Typ akcji | URL |
---|---|
PagesIncluding WebSearchURL | |
MoreSizes WebSearchURL | |
VisualSearch WebSearchURL | |
ImageById WebSearchURL | |
RelatedSearches WebSearchURL | |
Jednostka —> WebSearchUrl | https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=BvvDoRtmZ35Xc_UZE4lZx6_eg7FHgcCkigU1D98NHQo&v=1&r=https%3a%2f%2fwww.bing.com%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5380.1 |
TopicResults —> WebSearchUrl | https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=3QGtxPb3W9LemuHRxAlW4CW7XN4sPkUYCUynxAqI9zQ&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fnadella%2bsatya&p=DevEx,5382.1 |
ImageResults —> WebSearchUrl | https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=l-WNHO89Kkw69AmIGe2MhlUp6MxR6YsJszgOuM5sVLs&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5384.1 |
Jak pokazano powyżej, Entity
element ActionType zawiera zapytanie wyszukiwania Bing, które zwraca informacje o rozpoznawalnej osobie, miejscu lub rzeczy. Typy TopicResults
i ImageResults
zawierają zapytania dotyczące powiązanych obrazów. Adresy URL na liście to linki do wyników wyszukiwania Bing.
Pobieranie adresów URL obrazów PagesIncluding
ActionType
Uzyskanie rzeczywistych adresów URL obrazów wymaga rzutowania, które odczytuje typ akcji ActionType
jako ImageModuleAction
zawierający element Data
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);
}
}