Логотип облака Aspose.Imaging

Обнаружение объектов — это компьютерная технология, связанная с компьютерным зрением и обработкой изображений, которая занимается обнаружением экземпляров семантических объектов определенного класса (например, людей, зданий или автомобилей) на цифровых изображениях и видео. Если вам необходимо программно выполнить обнаружение объектов с помощью Cloud API, то API Aspose.Imaging Cloud являются идеальным выбором. Мы также разработали языковые SDK для упрощения работы наших клиентов. Поэтому Aspose.Imaging Cloud Java SDK — это приемлемый выбор для распознавания объектов с помощью Java.

В последних версиях релиза мы включили функцию обнаружения объектов в наши SDK, и с помощью этой функции пользователи могут обнаруживать границы объектов на входном изображении, а также их метки и вероятности. В настоящее время API поддерживает 3 формата растровых изображений (BMP, JPG и JPEG2000), а Single Shot Detector (SSD) является методом обнаружения для распознавания объектов. Тем не менее, мы планируем интегрировать несколько других методов и форматов изображений в наши последующие релизы. После выполнения операции через API мы можем получить объект JSON с границами обнаруженных объектов, метками и оценками или результирующее изображение с границами объектов и метками на нем. В настоящее время вы можете идентифицировать такие объекты, как человек, велосипед, автомобиль, кошка, собака, лошадь и т. д. Вы можете перейти по следующей ссылке для получения дополнительных сведений о Списке доступных меток.

Обнаружение объектов и выделение их на изображении

Существует два варианта обнаружения объектов внутри изображения: выполнение операции над изображением в хранилище или выполнение операции над изображением, переданным в теле запроса.

Обработка изображений из облачного хранилища

Первый метод предполагает, что вы сначала загрузите изображение в Cloud Storage, а затем передадите его имя в URL API. После обнаружения объекта API возвращает полученное изображение в ответе.

Мы также понимаем, что облачные хранилища являются быстрым и простым способом хранения и доступа к файлам. Процедура обнаружения объектов может быть легко выполнена на изображениях, хранящихся в облачном хранилище, и результирующий файл возвращается в заголовке ответа. В следующей команде cURL операция обнаружения объектов выполняется на изображении, содержащем несколько объектов, где аргументы, указано использовать Single Shot Detector (SSD) в качестве модели обнаружения, сохранить пороговое значение на уровне 50, включить метки объектов в результирующее изображение, а также указать оценку обнаружения объектов. Кроме того, мы указали Zebra, Giraffe, Horse в качестве списка разрешенных меток, разделенных запятыми, напротив аргумента allowedLabels. Тем не менее, если вы хотите сохранить результирующий файл в локальной системе, вы можете попробовать использовать -o и указать местоположение для результирующего файла.

команда cURL

curl -v "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/71ElMFUKIvL.jpg/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=zebra, giraffe, horse" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-o c:/pdftest/mydetected.jpeg

Фрагмент кода Java

 public void VisualBoundsAnImageInCloud() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = "blue";
	String folder = CloudPath; // Input file is saved at the Examples folder in the storage
	String storage = null; // We are using default Cloud Storage

	GetVisualObjectBoundsRequest request = new GetVisualObjectBoundsRequest(getSampleImageFileName(), method, threshold, includeLabel, includeScore, color, folder, storage);

	byte[] resultImage = ImagingApi.getVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
Исходный файл для обнаружения объектов

Изображение 1: Исходный файл для обнаружения объекта

Результирующее изображение с обнаруженными объектами

Изображение 2:- Результирующий файл с распознанными объектами

Обработка изображений без хранения

API обработки изображений предлагает второй метод (POST), с помощью которого вы можете напрямую передать изображение из локального хранилища в тело запроса. Он также позволяет вам сохранить полученное изображение в облачном хранилище, указав значение параметра outPath. Однако если вы не укажете значение, ответ будет содержать потоковое изображение.

команда cURL

curl -X POST "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow" -H "accept: application/json" -H "authorization: Bearer <jwt token>" -H "Content-Type: multipart/form-data" -d {"imageData":{}}

Запросить URL-адрес

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow

Фрагмент кода Java

public void VisualBoundsAnImageInRequestBody() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = null;
	String outPath = null;
	String storage = null; // We are using default Cloud Storage

	byte[] inputStream = Files.readAllBytes(Paths.get(ExampleImagesFolder, getSampleImageFileName()));
	CreateVisualObjectBoundsRequest request = new CreateVisualObjectBoundsRequest(inputStream, method, threshold, includeLabel, includeScore, color, outPath, storage);	

	byte[] resultImage = ImagingApi.createVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
Входное изображение с лошадью

Изображение 3:- Входное изображение с бегущей лошадью

На изображении обнаружен объект «лошадь»

Изображение 4: Лошадь обнаружена с вероятностью 98%

Заключение

В этой статье мы изучили возможности, связанные с распознаванием объектов с использованием Java SDK. SDK настолько удивителен, что может точно определять несколько объектов за одну попытку. Для дальнейшего упрощения работы пользователей он позволяет им выделять объекты и соответствующим образом их маркировать. Если у вас возникнут какие-либо проблемы при использовании API, пожалуйста, свяжитесь с нами через бесплатный форум поддержки продукта.

Похожие статьи

Мы рекомендуем посетить следующие ссылки, чтобы узнать больше: