Выполнение обратного поиска изображений в Java позволяет разработчикам находить похожие изображения в коллекции на основе их визуального контента, а не полагаться на ключевые слова или метаданные. Эта функция особенно ценна в таких приложениях, как поиск изображений, системы управления контентом и управление цифровыми активами. Используя библиотеку поиска, разработчики Java могут легко реализовать возможности обратного поиска изображений для быстрого нахождения соответствующих изображений. В этой статье мы рассмотрим, как выполнять обратный поиск изображений с помощью Java, и предоставим пример кода, который поможет вам начать работу. Эта функция особенно полезна для обработки различных форматов изображений, включая архивы PNG, JPEG и ZIP, обеспечивая бесшовную совместимость между различными платформами и типами файлов.
Действия по выполнению обратного поиска изображений с использованием Java
- Интегрируйте библиотеку GroupDocs.Search for Java в свой проект, чтобы включить функцию обратного поиска изображений.
- Инициализируйте объект Index, указав папку, в которой будет храниться индекс.
- Настройте параметры индексации изображений, чтобы разрешить индексацию изображений элементов контейнера, встроенных изображений и отдельных изображений.
- Добавьте документы в папку индекса с настроенными параметрами индексации изображений.
- Установите параметры ImageSearchOptions, такие как различия хэшей, максимальное количество результатов и фильтры для документов для поиска.
- Создайте эталонное изображение для поиска, указав путь к файлу изображения с помощью метода SearchImage.create.
- Выполнить поиск изображений в индексе, используя эталонное изображение и заданные параметры поиска через Index.search.
- Просмотрите результаты поиска и отобразите сведения о каждом найденном изображении.
Для реализации этой функциональности процесс начинается с создания индекса, который хранит изображения вместе с их связанными метаданными. Класс IndexingOptions
используется для включения индексации для различных типов изображений, таких как встроенные изображения, изображения элементов контейнера и отдельные изображения. После индексации поиск можно выполнить с помощью класса SearchImage
, который позволяет указать эталонное изображение и найти похожие совпадения в индексированных документах. Класс ImageSearchOptions
обеспечивает дальнейшую настройку поиска, включая установку ограничений на количество результатов и указание типов документов для поиска. Этот метод обеспечивает эффективный поиск изображений на основе содержимого в приложениях Java. Ниже приведен код Java для обратного поиска изображений, который иллюстрирует, как применять эти функции в вашем проекте.
Код для выполнения обратного поиска изображений с использованием Java
import com.groupdocs.search.Index; | |
import com.groupdocs.search.SearchDocumentFilter; | |
import com.groupdocs.search.common.SearchImage; | |
import com.groupdocs.search.licenses.License; | |
import com.groupdocs.search.options.ImageSearchOptions; | |
import com.groupdocs.search.options.IndexingOptions; | |
import com.groupdocs.search.results.FoundImageFrame; | |
import com.groupdocs.search.results.ImageSearchResult; | |
public class PerformReverseImageSearchusingJava { | |
public static void main(String[] args) throws Exception { | |
// Apply the license to remove the restrictions | |
// imposed by the Search library | |
License license = new License(); | |
license.setLicense("GroupDocs.Search.lic"); | |
// The path where the index will be stored | |
String indexFolder = "c:\\MyIndex\\"; | |
// The folder containing the documents you want to search | |
String documentsFolder = "c:\\MyDocuments\\"; | |
// Creating an index | |
Index index = new Index(indexFolder); | |
// Setting the image indexing options | |
IndexingOptions indexingOptions = new IndexingOptions(); | |
indexingOptions.getImageIndexingOptions().setEnabledForContainerItemImages(true); | |
indexingOptions.getImageIndexingOptions().setEnabledForEmbeddedImages(true); | |
indexingOptions.getImageIndexingOptions().setEnabledForSeparateImages(true); | |
// Indexing documents in a document folder | |
index.add(documentsFolder, indexingOptions); | |
// Setting the image search options | |
ImageSearchOptions imageSearchOptions = new ImageSearchOptions(); | |
imageSearchOptions.setHashDifferences(10); | |
imageSearchOptions.setMaxResultCount(10000); | |
imageSearchOptions.setSearchDocumentFilter(SearchDocumentFilter | |
.createFileExtension(".zip", ".png", ".jpg")); | |
// Creating a reference image for search | |
SearchImage searchImage = SearchImage.create("c:\\MyDocuments\\image.png"); | |
// Searching in the index | |
ImageSearchResult result = index.search(searchImage, imageSearchOptions); | |
System.out.print("Images found: " + result.getImageCount()); | |
for (int i = 0; i < result.getImageCount(); i++) { | |
FoundImageFrame image = result.getFoundImage(i); | |
System.out.print(image.getDocumentInfo().toString()); | |
} | |
} | |
} |
Выполнение поиска изображений на основе контента с использованием Java является важным свойством для эффективного поиска похожих изображений на основе контента, позволяя приложениям быстро и точно находить изображения в различных средах, от настольного программного обеспечения до облачных сервисов. Включение библиотеки поиска для индексации и поиска изображений обеспечивает независимость платформы, делая ее совместимой с Windows, macOS и Linux, а также позволяя масштабировать ее для управления большими наборами данных изображений. Используя эти функции, разработчики могут создавать мощные системы поиска изображений, которые улучшают пользовательский опыт и оптимизируют управление контентом на различных платформах и в приложениях. Такой подход не только повышает эффективность поиска, но и упрощает обработку обширных библиотек изображений, обеспечивая плавную интеграцию в существующие рабочие процессы.
Ранее мы опубликовали подробное руководство по выполнению поиска регулярных выражений с использованием Java. Для получения полных пошаговых инструкций изучите нашу подробную статью о том, как выполнить Поиск регулярных выражений с использованием Java.