Udostępnij za pośrednictwem


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

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 .

Zasób z wieloma usługami

  • 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:

Zespół liderów wyższego szczebla firmy Microsoft

Ten obraz jest przycinany przez utworzenie ImageInfo obiektu z obszaru przycinania i załadowanie ImageInfo obiektu do VisualSearchRequestobiektu . 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);
        }
    }

Następne kroki

Zobacz też

Co to jest interfejs API wyszukiwania wizualnego Bing?