Aspose.Imaging Cloud 徽标

对象检测是一种与计算机视觉和图像处理相关的计算机技术,用于检测数字图像和视频中某一类(如人类、建筑物或汽车)的语义对象实例。如果您需要使用 Cloud API 以编程方式执行对象检测,那么 Aspose.Imaging Cloud API 是完美的选择。我们还开发了特定语言的 SDK 来方便我们的客户。因此 Aspose.Imaging Cloud Java SDK 是使用 Java 进行对象识别的可行选择。

在最近的发布版本中,我们在 SDK 中加入了对象检测功能,借助此功能,用户能够检测输入图像上的对象边界,只要知道它们的标签和概率。API 目前支持 3 种光栅图像格式(BMPJPGJPEG2000),单次检测器 (SSD) 是识别对象的检测方法。尽管如此,我们计划在后续版本中集成其他几种方法和图像格式。通过 API 执行操作后,我们可以获得一个 JSON 对象,其中包含检测到的对象边界、标签和分数,或者一个结果图像,其中包含对象边界和标签。目前,您可以识别人、自行车、汽车、猫、狗、马等对象。您可以考虑访问以下链接以获取有关 可用标签列表 的更多详细信息。

检测图像上的物体并突出显示

有两种选项可以检测图像内的对象,即对存储中的图像执行操作或对请求主体中传递的图像执行操作。

处理来自云存储的图像

第一种方法要求您先将图片上传到 Cloud Storage,然后在 API URL 中传递其名称。对象检测完成后,API 会在响应中返回生成的图片。

我们还了解到,云存储是一种快速简便的存储和访问文件的方式。可以轻松地对存储在云存储中的图像执行对象检测过程,并在响应标头中返回结果文件。在以下 cURL 命令中,对包含多个对象的图像执行对象检测操作,其中参数指定使用单次检测器 (SSD) 作为检测模型,将阈值保持在 50,在结果图像中包含对象的标签,并指定对象检测分数。此外,我们已将 Zebra、giraffe、horse 指定为允许标签参数的逗号分隔列表。不过,如果您想将结果文件保存在本地系统上,您可以尝试使用 -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 参数值将生成的图片保存在 Cloud Storage 上。但是,如果您未指定该值,则响应将包含流式传输的图片。

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 时遇到任何问题,请随时通过 免费产品支持论坛 与我们联系。

相关文章

我们建议您访问以下链接来了解: