我们使用了“如何将多个 PNG 组合成一个大的 PNG 文件?”中的代码,从 stackoverflow 一个接一个地附加图像,然后将最终图像发送到谷歌的云视觉 api。
如果我们附加 165 张图像并发送最终图像,则可以正确检测到人脸。
但是如果我们附加 170 张图像并将最终图像发送到云视觉 api,则不会检测到人脸。
注意:文件大小低于 4 MB 限制。请查找附件以供参考
索取资料
我们使用谷歌的 CLOUD VISION API
public List<FaceAnnotation> detectFaces(Path path, int maxResults) throws IOException {
byte[] data = Files.readAllBytes(path);
AnnotateImageRequest request = new AnnotateImageRequest()
.setImage(new Image().encodeContent(data))
.setFeatures(ImmutableList.of(new Feature().setType("FACE_DETECTION").setMaxResults(maxResults)));
Vision.Images.Annotate annotate = vision.images()
.annotate(new BatchAnnotateImagesRequest().setRequests(ImmutableList.of(request)));
// Due to a bug: requests to Vision API containing large images fail
// when GZipped.
annotate.setDisableGZipContent(true);
BatchAnnotateImagesResponse batchResponse = annotate.execute();
assert batchResponse.getResponses().size() == 1;
AnnotateImageResponse response = batchResponse.getResponses().get(0);
if (response.getFaceAnnotations() == null) {
throw new IOException(response.getError() != null ? response.getError().getMessage()
: "Unknown error getting image annotations");
}
System.out.println(response.toPrettyString());
return response.getFaceAnnotations();
}
提供的错误是:这里的第 263 行是“抛出新的 IOException”
Exception in thread "main" java.io.IOException: image-annotator::error(12): Image processing error!
at conf.FaceDetectApp.detectFaces(FaceDetectApp.java:263)
at conf.FaceDetectApp.main(FaceDetectApp.java:161)