Kurz: Oříznutí obrázku pomocí sady SDK Vizuálního vyhledávání Bingu pro jazyk C#
Upozorňující
30. října 2020 se rozhraní API Bingu pro vyhledávání přesunula ze služeb Azure AI do služby Bing Search Services. Tato dokumentace je k dispozici pouze pro referenci. Aktualizovanou dokumentaci najdete v dokumentaci k rozhraní API Bingu pro vyhledávání. Pokyny k vytváření nových prostředků Azure pro vyhledávání Bingu najdete v tématu Vytvoření prostředku Vyhledávání Bingu prostřednictvím Azure Marketplace.
Sada SDK Vizuálního vyhledávání Bingu umožňuje oříznout obrázek před vyhledáním podobných online obrázků. Tato aplikace ořezá jednu osobu z obrázku obsahujícího několik lidí a pak vrátí výsledky hledání obsahující podobné obrázky nalezené online.
Úplný zdrojový kód pro tuto aplikaci je k dispozici s dalšími popisy chyb a poznámkami na GitHubu.
Tento kurz ukazuje, jak:
- Odeslání požadavku pomocí sady SDK vizuálního vyhledávání Bingu
- Oříznutí oblasti obrázku pro vyhledávání pomocí vizuálního vyhledávání Bingu
- Přijetí a zpracování odpovědi
- Vyhledání adres URL položek akcí v odpovědi
Požadavky
- Libovolná edice sady Visual Studio 2019
- Pokud používáte Linux nebo MacOS, je možné tuto aplikaci spustit pomocí Mono.
- Nainstalovaný balíček NuGet pro vlastní vyhledávání.
- V Průzkumník řešení v sadě Visual Studio klikněte pravým tlačítkem na projekt a v nabídce vyberte Spravovat balíčky NuGet. Nainstalujte balíček
Microsoft.Azure.CognitiveServices.Search.CustomSearch
. Při instalaci balíčku NuGet Custom Search se nainstalují také následující sestavení:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- V Průzkumník řešení v sadě Visual Studio klikněte pravým tlačítkem na projekt a v nabídce vyberte Spravovat balíčky NuGet. Nainstalujte balíček
Vytvoření prostředku Azure
Začněte používat rozhraní API Pro vizuální vyhledávání Bingu vytvořením jednoho z následujících prostředků Azure:
Prostředek Vyhledávání Bingu v7
- K dispozici prostřednictvím webu Azure Portal, dokud prostředek neodstraníte.
- Vyberte cenovou
S9
úroveň.
- K dispozici prostřednictvím webu Azure Portal, dokud prostředek neodstraníte.
- Použijte stejný klíč a koncový bod pro vaše aplikace napříč několika službami Azure AI.
Zadání oblasti oříznutí obrázku
Tato aplikace ořezá oblast této image vedoucího týmu Microsoftu. Tato oblast oříznutí je definována pomocí souřadnic v levém horním a pravém dolním rohu, které jsou reprezentované jako procento celého obrázku:
Tento obrázek je oříznut vytvořením objektu ImageInfo
z oblasti oříznutí a načtením ImageInfo
objektu do objektu VisualSearchRequest
. Objekt ImageInfo
obsahuje také adresu URL obrázku:
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);
Hledání obrázků podobných oblasti oříznutí
Proměnná VisualSearchRequest
obsahuje informace o oblasti oříznutí obrázku a její adrese URL. Metoda VisualSearchMethodAsync()
získá výsledky:
Console.WriteLine("\r\nSending visual search request with knowledgeRequest that contains URL and crop area");
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result;
Získání dat adresy URL z ImageModuleAction
Výsledky vizuálního vyhledávání Bingu jsou ImageTag
objekty. Každá značka obsahuje seznam objektů ImageAction
. Každý ImageAction
obsahuje Data
pole, což je seznam hodnot, které závisí na typu akce.
Různé typy můžete vytisknout pomocí následujícího kódu:
Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl);
Dokončená aplikace vrátí:
ActionType | Adresa URL |
---|---|
PagesIncluding WebSearchURL | |
MoreSizes WebSearchURL | |
VisualSearch WebSearchURL | |
ImageById WebSearchURL | |
Související hledání WebSearchURL | |
Entita –> 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 je znázorněno výše, Entity
ActionType obsahuje vyhledávací dotaz Bingu, který vrací informace o rozpoznatelné osobě, místě nebo věci. Typy TopicResults
a ImageResults
obsahují dotazy pro související obrázky. Adresy URL v seznamu odkazují na výsledky vyhledávání Bingu.
Získání adres URL pro PagesIncluding
ActionType
obrázky
Získání skutečné adresy URL obrázku vyžaduje přetypování, které čte ActionType
jako ImageModuleAction
, obsahující element Data
se seznamem hodnot. Každá hodnota je adresa URL obrázku. Následující přetypuje PagesIncluding
typ ImageModuleAction
akce na hodnoty a přečte je:
if (i.ActionType == "PagesIncluding")
{
foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}