Руководство по Поиск похожих изображений из предыдущих операций поиска с помощью токена сведений об изображении
Предупреждение
30 октября 2020 г. API-интерфейсы Поиск Bing перемещены из служб ИИ Azure в службы Поиск Bing. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing см. в статье о том, как создать ресурс для Поиска Bing с помощью Azure Marketplace.
Клиентская библиотека Визуального поиска позволяет находить изображения в Интернете из предыдущих операций поиска, возвращающих ImageInsightsToken
. Это приложение получает ImageInsightsToken
и использует токен в последующих операциях поиска. Затем оно отправляет ImageInsightsToken
в Bing и возвращает результаты, содержащие URL-адреса Поиска Bing и URL-адреса схожих изображений, найденных в Интернете.
Полный исходный код для работы с этим руководством с дополнительными возможностями по обработке ошибок и заметками можно получить на GitHub.
Предварительные требования
- Любой выпуск Visual Studio 2019.
- Если вы используете Linux или MacOS, это приложение можно запустить с помощью Mono.
- Пакеты NuGet для визуального поиска и поиска изображений.
- В обозревателе решений Visual Studio щелкните правой кнопкой мыши проект и в меню выберите пункт Управление пакетами NuGet. Установите пакеты
Microsoft.Azure.CognitiveServices.Search.CustomSearch
иMicrosoft.Azure.CognitiveServices.Search.ImageSearch
. При установке пакетов NuGet также устанавливаются следующие пакеты.- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json.
- В обозревателе решений Visual Studio щелкните правой кнопкой мыши проект и в меню выберите пункт Управление пакетами NuGet. Установите пакеты
Создание ресурса Azure
Чтобы начать работу с API Визуального поиска Bing, создайте один из следующих ресурсов Azure.
- доступен на портале Azure до удаления.
- Выберите ценовую категорию
S9
.
- доступен на портале Azure до удаления.
- Используйте один и тот же ключ и конечную точку для приложений в нескольких службах ИИ Azure.
Получение токена ImageInsightsToken из клиентской библиотеки для API "Поиск изображений Bing"
Это приложение использует ImageInsightsToken
, полученный с помощью клиентской библиотеки для API "Поиск изображений Bing". В новом консольном приложении C# создайте клиент для вызова API с помощью ImageSearchClient()
. Затем используйте 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\"");
Сохраните результат первого поиска с помощью imageResults.Value.First()
, а затем сохраните токен 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!");
}
Этот ImageInsightsToken
будет отправлен в Визуальный поиск Bing в запросе.
Указание токена ImageInsightsToken в запросе визуального поиска
Укажите ImageInsightsToken
для запроса визуального поиска, создав объект ImageInfo
из ImageInsightsToken
, содержащихся в ответах от визуального поиска Bing.
ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);
Использование визуального поиска для обнаружения изображений из токена ImageInsightsToken
Объект VisualSearchRequest
содержит сведения об изображении, поиск которого выполняется в ImageInfo
. Метод VisualSearchMethodAsync()
получает результаты. Указывать двоичный файл изображения не нужно, так как изображение представлено токеном.
VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;
Итерация по результатам визуального поиска
Результатами визуального поиска являются объекты ImageTag
. Каждый тег содержит список объектов ImageAction
. Каждый объект ImageAction
содержит поле Data
, которое представляет собой список значений, зависящих от типа действия. Например, можно выполнить итерацию по объектам ImageTag
в списке visualSearchResults.Tags
и получить содержащийся в нем тег ImageAction
. В следующем примере показан вывод сведений о действиях 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
Для получения URL-адресов фактических изображений из типов действий требуется приведение к типу, который считывает ActionType
как ImageModuleAction
, содержащий элемент Data
со списком значений. Каждое значение является URL-адресом изображения. Далее показано приведение типа действия PagesIncluding
к ImageModuleAction
и считывание значений.
if (i.ActionType == "PagesIncluding")
{
foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}
Дополнительные сведения об этих типах данных см. в статье Images - Visual Search (Изображения — визуальный поиск).
Возвращаемые URL-адреса
Готовое приложение возвращает указанные далее URL-адреса.
Тип действия | 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=BcQifmzdKFyyBusjLxxxgO42kzq1Geh7RucVVqvH-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=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1 |
Как показано выше, типы TopicResults
и ImageResults
содержат запросы для связанных изображений. URL-адреса ведут на результаты поиска Bing.
Дальнейшие действия
Create a Visual Search single-page web app (Создание одностраничного веб-приложения Визуального поиска)