对象检测是一种与计算机视觉和图像处理相关的计算机技术,用于检测数字图像和视频中某一类(如人类、建筑物或汽车)的语义对象实例。如果您需要使用 Cloud API 以编程方式执行对象检测,那么 Aspose.Imaging Cloud API 是完美的选择。我们还开发了特定语言的 SDK 来方便我们的客户。因此 Aspose.Imaging Cloud Java SDK 是使用 Java 进行对象识别的可行选择。
在最近的发布版本中,我们在 SDK 中加入了对象检测功能,借助此功能,用户能够检测输入图像上的对象边界,只要知道它们的标签和概率。API 目前支持 3 种光栅图像格式(BMP、JPG 和 JPEG2000),单次检测器 (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);
}
无需存储即可处理图像
图片处理 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);
}
结论
在本文中,我们探索了使用 Java SDK 进行对象识别的相关功能。该 SDK 非常出色,它可以在一次尝试中精确地确定多个对象。为了进一步方便用户,它使他们能够突出显示对象并相应地标记它们。如果您在使用 API 时遇到任何问题,请随时通过 免费产品支持论坛 与我们联系。
相关文章
我们建议您访问以下链接来了解: