Freigeben über


Tutorial: Zuschneiden eines Bilds mithilfe des Bing Visual Search SDK für C#

Warnung

Am 30. Oktober 2020 wurden die Bing-Suche-APIs aus Azure KI Services in die Bing-Suchdienste verschoben. Diese Dokumentation wird nur zu Referenzzwecken bereitgestellt. Eine aktualisierte Dokumentation finden Sie in der Dokumentation zu den Bing-Suche-APIs. Anweisungen zum Erstellen neuer Azure-Ressourcen für die Bing-Suche finden Sie unter Erstellen einer Ressource für die Bing-Suche über Azure Marketplace.

Mithilfe des Bing Visual Search SDK können Sie ein Bild vor der Suche nach ähnlichen Onlinebildern zuschneiden. Diese Anwendung schneidet ein Bild mit mehreren Personen auf eine einzelne Person zu und gibt anschließend Suchergebnisse mit ähnlichen Onlinebildern zurück.

Der vollständige Quellcode für diese Anwendung ist zusammen mit zusätzlichen Fehlerbehandlungen und Anmerkungen auf GitHub verfügbar.

In diesem Tutorial wird Folgendes veranschaulicht:

  • Senden einer Anforderung unter Verwendung des Bing Visual Search SDK
  • Zuschneiden eines Bildbereichs für die Suche mit der visuellen Bing-Suche
  • Empfangen und Verarbeiten der Antwort
  • Suchen nach den URLs von Aktionselementen in der Antwort

Voraussetzungen

  • Eine beliebige Edition von Visual Studio 2019.
  • Unter Linux/macOS kann diese Anwendung mit Mono ausgeführt werden
  • Ein installiertes NuGet-Paket für die benutzerdefinierte Suche.
    • Klicken Sie im Projektmappen-Explorer in Visual Studio mit der rechten Maustaste auf Ihr Projekt, und wählen Sie im Menü NuGet-Pakete verwalten aus. Installieren Sie das Microsoft.Azure.CognitiveServices.Search.CustomSearch-Paket. Beim Installieren des NuGet Custom Search-Pakets werden auch die folgenden Assemblys installiert:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Erstellen einer Azure-Ressource

Beginnen Sie mit der Verwendung der API für die visuelle Bing-Suche, indem Sie eine der folgenden Azure-Ressourcen erstellen:

Ressource für Bing-Suche v7

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Wählen Sie den S9-Tarif aus.

Ressource für mehrere Dienste

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie in allen Azure KI Services-Instanzen denselben Schlüssel und Endpunkt für Ihre Anwendungen.

Angeben des Bereichs für den Bildzuschnitt

Diese Anwendung schneidet das Bild des Führungsteams von Microsoft auf einen bestimmten Bereich zu. Der Zuschneidebereich wird durch eine linke obere und eine rechte untere Koordinate definiert und als Prozentsatz des Gesamtbilds dargestellt:

Führungsteam von Microsoft

Zum Zuschneiden des Bilds wird anhand des Zuschneidebereichs ein Objekt vom Typ ImageInfo erstellt, und das Objekt ImageInfo wird in ein Element vom Typ VisualSearchRequest geladen. Das Objekt ImageInfo enthält auch die URL des Bilds:

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);

Suchen nach Bildern, die dem Zuschneidebereich ähneln

Die Variable VisualSearchRequest enthält Informationen zum Zuschneidebereich des Bilds sowie die dazugehörige URL: Mit der VisualSearchMethodAsync()-Methode werden die Ergebnisse abgerufen:

Console.WriteLine("\r\nSending visual search request with knowledgeRequest that contains URL and crop area");
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result;

Rufen Sie die URL-Daten von ImageModuleAction ab

Die Ergebnisse der visuellen Bing-Suche sind Objekte vom Typ ImageTag. Jedes Tag enthält eine Liste mit ImageAction-Objekten. Jedes Objekt vom Typ ImageAction enthält ein Feld vom Typ Data. Hierbei handelt es sich um eine Liste mit Werten, die von der Art der Aktion abhängen.

Sie können die unterschiedlichen Arten mit dem folgenden Code ausgeben:

Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl);

Die vollständige Anwendung gibt Folgendes zurück:

ActionType URL
PagesIncluding WebSearchURL
MoreSizes WebSearchURL
VisualSearch WebSearchURL
ImageById WebSearchURL
RelatedSearches WebSearchURL
Entity > 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

Wie oben zu sehen, enthält der Aktionstyp Entity eine Bing-Suchabfrage, die Informationen zu einer erkennbaren Person, einem Ort oder einem Gegenstand zurückgibt. Die Typen TopicResults und ImageResults enthalten Abfragen für verwandte Bilder. Die URLs in der Liste sind Verknüpfungen zu Bing-Suchergebnissen.

Abrufen von URLs für Bilder vom Typ PagesIncluding ActionType

Zum Abrufen der eigentlichen Bild-URLs ist eine Umwandlung erforderlich, bei der ein ActionType-Element als ImageModuleAction gelesen wird, das ein Data-Element mit einer Werteliste enthält. Jeder Wert ist die URL eines Bilds. Im Folgenden wird der Aktionstyp PagesIncluding in ImageModuleAction umgewandelt, und die Werte werden gelesen:

    if (i.ActionType == "PagesIncluding")
    {
        foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
        {
            Console.WriteLine("ContentURL: " + o.ContentUrl);
        }
    }

Nächste Schritte

Weitere Informationen

Was ist die API für die Visuelle Bing-Suche?