Kurz: Vyhledání podobných obrázků z předchozích hledání pomocí tokenu přehledů obrázků
Upozornění
30. října 2020 se rozhraní API Vyhledávání Bingu přesunula ze služeb Azure AI na Vyhledávání Bingu 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.
Klientská knihovna vizuálního vyhledávání umožňuje najít online obrázky z předchozích hledání, která vrací ImageInsightsToken
. Tato aplikace získá ImageInsightsToken
token a použije ho v následném hledání. Pak odešle do Bingu ImageInsightsToken
a vrátí výsledky, které zahrnují Vyhledávání Bingu adresy URL a adresy URL podobných obrázků nalezených online.
Úplný zdrojový kód pro tento kurz najdete s dalšími chybami a poznámkami na GitHubu.
Požadavky
- Libovolná edice sady Visual Studio 2019.
- Pokud používáte Linux nebo MacOS, můžete tuto aplikaci spustit pomocí mono.
- Balíčky NuGet Pro vizuální vyhledávání a Vyhledávání obrázků.
- 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.
Microsoft.Azure.CognitiveServices.Search.CustomSearch
Nainstalujte balíček a balíčekMicrosoft.Azure.CognitiveServices.Search.ImageSearch
. Při instalaci balíčků NuGet se také nainstalují následující položky:- 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.
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 Azure Portal, dokud prostředek neodstraníte.
- Vyberte cenovou
S9
úroveň.
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.
Získejte ImageInsightsToken z klientské knihovny Bingu pro vyhledávání obrázků.
Tato aplikace používá objekt získaný ImageInsightsToken
prostřednictvím klientské knihovny Vyhledávání obrázků Bingu. V nové konzolové aplikaci jazyka C# vytvořte klienta pro volání rozhraní API pomocí ImageSearchClient()
. Pak s dotazem použijte SearchAsync()
:
var client = new ImageSearchClient(new Microsoft.Azure.CognitiveServices.Search.ImageSearch.ApiKeyServiceClientCredentials(subKey));
var imageResults = client.Images.SearchAsync(query: "canadian rockies").Result;
Console.WriteLine("Search images for query \"canadian rockies\"");
Uložte první výsledek hledání pomocí imageResults.Value.First()
a pak uložte přehled obrázku ImageInsightsToken
.
String insightTok = "None";
if (imageResults.Value.Count > 0)
{
var firstImageResult = imageResults.Value.First();
insightTok = firstImageResult.ImageInsightsToken;
}
else
{
insightTok = "None found";
Console.WriteLine("Couldn't find image results!");
}
Ten ImageInsightsToken
se odešle do vizuálního vyhledávání Bingu v požadavku.
Přidání imageInsightsToken do požadavku vizuálního vyhledávání
ImageInsightsToken
Zadejte pro požadavek vizuálního vyhledávání objekt takImageInfo
, že vytvoříte objekt z ImageInsightsToken
odpovědí obsažených v odpovědích z vizuálního vyhledávání Bingu.
ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);
Vyhledání obrázků z imageInsightsToken pomocí vizuálního vyhledávání Bingu
Objekt VisualSearchRequest
obsahuje informace o obrázku, který ImageInfo
se má prohledávat. Metoda VisualSearchMethodAsync()
získá výsledky. Nemusíte zadávat binární soubor obrázku, protože obrázek je reprezentovaný tokenem.
VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;
Iterace ve výsledcích vizuálního hledání
Výsledky Vizuálního vyhledávání jsou objekty ImageTag
. Každá značka obsahuje seznam objektů ImageAction
. Každý ImageAction
obsahuje Data
pole, což je seznam hodnot, které závisí na typu akce. Můžete například iterovat objekty ImageTag
v visualSearchResults.Tags
a získat značku v objektu ImageAction
. V následující ukázce jsou uvedené podrobnosti o akcích PagesIncluding
:
if (visualSearchResults.Tags.Count > 0)
{
// List of tags
foreach (ImageTag t in visualSearchResults.Tags)
{
foreach (ImageAction i in t.Actions)
{
Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " WebSearchURL: " + i.WebSearchUrl);
if (i.ActionType == "PagesIncluding")
{
foreach (ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}
}
}
}
PagesIncluding ActionTypes
K získání skutečných adres URL obrázků z typů akcí se vyžaduje přetypování , které bude číst ActionType
jako ImageModuleAction
, což obsahuje Data
prvek se seznamem hodnot. Každá hodnota je adresa URL obrázku. Následující příkaz přetypuje PagesIncluding
typ akce na ImageModuleAction
a přečte hodnoty:
if (i.ActionType == "PagesIncluding")
{
foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}
Další informace o těchto typech dat najdete v článku Obrázky – Vizuální vyhledávání.
Vrácené adresy URL
Úplná aplikace vrátí následující adresy URL:
ActionType | URL |
---|---|
MoreSizes –> WebSearchUrl | |
VisualSearch –> WebSearchUrl | |
ImageById –> WebSearchUrl | |
RelatedSearches –> WebSearchUrl: | |
DocumentLevelSuggestions –> WebSearchUrl: | |
TopicResults -> WebSearchUrl | https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVVqvH-900&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fcanadian%2brocky&p=DevEx,5823.1 |
ImageResults –> WebSearchUrl | https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJS&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1 |
Jak je znázorněno výše, TopicResults
typy a ImageResults
obsahují dotazy na související obrázky. Adresy URL odkazují na výsledky hledání Bingu.