Logotipo da nuvem Aspose.Imaging

Detecção de objetos é uma tecnologia de computador relacionada à visão computacional e processamento de imagens que lida com a detecção de instâncias de objetos semânticos de uma determinada classe (como humanos, edifícios ou carros) em imagens e vídeos digitais. Caso você precise executar programaticamente a detecção de objetos usando a API do Cloud, as APIs do Aspose.Imaging Cloud são uma escolha perfeita. Também desenvolvemos SDKs específicos de linguagem para facilitar nossos clientes. Portanto, Aspose.Imaging Cloud Java SDK é uma escolha viável para reconhecimento de objetos usando Java.

Em versões de lançamento recentes, incorporamos o recurso de detecção de objetos em nossos SDKs e, com a ajuda desse recurso, os usuários conseguem detectar limites de objetos em uma imagem de entrada, desde que seus rótulos e probabilidades. A API atualmente suporta 3 formatos de imagem raster (BMP, JPG e JPEG2000) e o Single Shot Detector (SSD) é o método de detecção para reconhecer objetos. No entanto, estamos planejando integrar vários outros métodos e formatos de imagem em nossos lançamentos subsequentes. Depois que a operação for realizada por meio da API, podemos obter um objeto JSON com limites de objetos detectados, rótulos e pontuações ou uma imagem resultante com limites de objetos e rótulos. Atualmente, você pode identificar objetos como uma pessoa, bicicleta, carro, gato, cachorro, cavalo, etc. Você pode considerar visitar o link a seguir para obter mais detalhes sobre a Lista de rótulos disponíveis.

Detectar objetos e destacá-los na imagem

Há duas opções para detectar objetos dentro de uma imagem: executar uma operação em uma imagem armazenada ou executar uma operação em uma imagem passada no corpo da solicitação.

Processar imagens do armazenamento em nuvem

O primeiro método espera que você primeiro carregue uma imagem no Cloud Storage e então passe seu nome na URL da API. Após a detecção do objeto, a API retorna a imagem resultante na resposta.

Também entendemos que os armazenamentos em nuvem são uma maneira rápida e fácil de armazenar e acessar arquivos. O procedimento de detecção de objetos pode ser facilmente executado em imagens armazenadas no armazenamento em nuvem e o arquivo resultante é retornado no cabeçalho de resposta. No comando cURL a seguir, a operação de detecção de objetos é executada em uma imagem contendo vários objetos em que os argumentos são especificados para usar o Single Shot Detector (SSD) como modelo de detecção, manter o valor limite em 50, incluir rótulos de objetos na imagem resultante e também especificar a pontuação de detecção de objetos. Além disso, especificamos Zebra, girafa, cavalo como uma lista separada por vírgulas de rótulos permitidos em relação ao argumento allowedLabels. No entanto, se você quiser salvar o arquivo resultante no sistema local, pode tentar usar -o e especificar um local para o arquivo 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

Trecho 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);
}
Arquivo de origem para detecção de objetos

Imagem 1:- Arquivo de origem para detecção de objetos

Imagem resultante com objetos detectados

Imagem 2:- Arquivo resultante com objetos reconhecidos

Processar imagens sem armazenamento

A API de processamento de imagem oferece um segundo método (POST) onde você pode passar a imagem diretamente do armazenamento local para o corpo da solicitação. Ela também permite que você salve a imagem resultante no Cloud Storage especificando o valor do parâmetro outPath. No entanto, se você não especificar o valor, a resposta conterá uma imagem 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 da solicitação

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

Trecho 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);
}
Imagem de entrada com cavalo

Imagem 3:- Imagem de entrada com cavalo correndo

Objeto cavalo detectado na imagem

Imagem 4:- Cavalo detectado com pontuação de 98%

Conclusão

Neste artigo, exploramos os recursos relacionados ao Reconhecimento de Objetos usando o Java SDK. O SDK é tão incrível que pode determinar precisamente vários objetos em uma única tentativa. Para facilitar ainda mais os usuários, ele permite que eles destaquem os objetos e os rotulem adequadamente. Caso você encontre algum problema ao usar a API, sinta-se à vontade para entrar em contato conosco pelo fórum de suporte gratuito ao produto.

Artigos relacionados

Recomendamos visitar os seguintes links para saber mais sobre: