1

我们使用了“如何将多个 PNG 组合成一个大的 PNG 文件?”中的代码,从 stackoverflow 一个接一个地附加图像,然后将最终图像发送到谷歌的云视觉 api。

如果我们附加 165 张图像并发送最终图像,则可以正确检测到人脸。

但是如果我们附加 170 张图像并将最终图像发送到云视觉 api,则不会检测到人脸。

注意:文件大小低于 4 MB 限制。请查找附件以供参考

索取资料

结果Face165

结果Face170

我们使用谷歌的 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)
4

0 回答 0