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 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.

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 powoduje również zainstalowanie następujących zestawów:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

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 .

Zasób z wieloma usługami

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

Określanie obszaru przycinania obrazu

Ta aplikacja przycina obszar tego obrazu zespołu kierowniczego 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 obiektu VisualSearchRequest. 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:

ActionType Adres 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%2fww.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%2fww.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 zawierają link do wyników wyszukiwania Bing.

Uzyskiwanie adresów URL obrazów PagesIncludingActionType

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?