Logotipo de Aspose.Imaging Cloud

La detección de objetos es una tecnología informática relacionada con la visión artificial y el procesamiento de imágenes que se ocupa de detectar instancias de objetos semánticos de una determinada clase (como seres humanos, edificios o automóviles) en imágenes y vídeos digitales. En caso de que necesite realizar la detección de objetos mediante programación utilizando la API de Cloud, las API de Aspose.Imaging Cloud son una opción perfecta. También hemos desarrollado SDK específicos para cada lenguaje para facilitar la tarea a nuestros clientes. Por lo tanto, Aspose.Imaging Cloud Java SDK es una opción viable para el reconocimiento de objetos mediante Java.

En versiones recientes, hemos incorporado la función de detección de objetos en nuestros SDK y con la ayuda de esta función, los usuarios pueden detectar los límites de los objetos en una imagen de entrada, siempre que se incluyan sus etiquetas y probabilidades. La API actualmente admite 3 formatos de imágenes rasterizadas (BMP, JPG y JPEG2000) y Single Shot Detector (SSD) es el método de detección para reconocer objetos. Sin embargo, estamos planeando integrar varios otros métodos y formatos de imagen en nuestras versiones posteriores. Una vez que se realiza la operación a través de la API, podemos obtener un objeto JSON con límites de objetos detectados, etiquetas y puntajes o una imagen de resultado con límites de objetos y etiquetas en ella. Actualmente, puede identificar objetos como una persona, una bicicleta, un automóvil, un gato, un perro, un caballo, etc. Puede considerar visitar el siguiente enlace para obtener más detalles sobre la Lista de etiquetas disponibles.

Detecta objetos y resalta en la imagen

Hay dos opciones para detectar objetos dentro de una imagen, es decir, realizar una operación sobre una imagen almacenada o realizar una operación sobre una imagen pasada en el cuerpo de la solicitud.

Procesar imágenes desde el almacenamiento en la nube

El primer método espera que primero cargues una imagen en Cloud Storage y luego pases su nombre en la URL de la API. Después de la detección del objeto, la API devuelve la imagen resultante en la respuesta.

También entendemos que los almacenamientos en la nube son una forma rápida y sencilla de almacenar y acceder a archivos. El procedimiento de detección de objetos se puede realizar fácilmente en imágenes almacenadas en el almacenamiento en la nube y el archivo resultante se devuelve en el encabezado de respuesta. En el siguiente comando cURL, la operación de detección de objetos se realiza en una imagen que contiene varios objetos en cuyos argumentos se especifica que se use Single Shot Detector (SSD) como modelo de detección, se mantenga el valor de umbral en 50, se incluyan etiquetas de objetos en la imagen resultante y también se especifique la puntuación de detección de objetos. Además, hemos especificado Cebra, jirafa y caballo como una lista separada por comas de etiquetas permitidas contra el argumento allowedLabels. Sin embargo, si desea guardar el archivo resultante en el sistema local, puede intentar usar -o y especificar una ubicación para el archivo resultante.

Comando 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

Fragmento de código 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);
}
Archivo fuente para detección de objetos

Imagen 1:- Archivo fuente para la detección de objetos

Imagen resultante con objetos detectados

Imagen 2:- Archivo resultante con objetos reconocidos

Procesar imágenes sin almacenamiento

La API de procesamiento de imágenes ofrece un segundo método (POST) mediante el cual puede pasar directamente la imagen desde el almacenamiento local al cuerpo de la solicitud. También le permite guardar la imagen resultante en el almacenamiento en la nube especificando el valor del parámetro outPath. Sin embargo, si no especifica el valor, la respuesta contiene una imagen transmitida.

Comando 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 de solicitud

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

Fragmento de código 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);
}
Imagen de entrada con caballo

Imagen 3: Imagen de entrada con caballo corriendo

Objeto de caballo detectado en imagen

Imagen 4:- Caballo detectado con una puntuación del 98%

Conclusión

En este artículo, hemos explorado las capacidades relacionadas con el reconocimiento de objetos mediante el SDK de Java. El SDK es tan sorprendente que puede determinar con precisión varios objetos en un solo intento. Para facilitar aún más la tarea a los usuarios, les permite resaltar los objetos y etiquetarlos en consecuencia. En caso de que surja algún problema al utilizar la API, no dude en ponerse en contacto con nosotros a través del foro de soporte técnico gratuito del producto.

Artículos relacionados

Te recomendamos visitar los siguientes enlaces para conocer: