「複数のPNGを1つの大きなPNGファイルに結合する方法」のコードをstackoverflowから使用して、画像の後に画像を追加し、最終画像をGoogleのクラウドビジョンAPIに送信しました。
165 枚の画像を追加して最終的な画像を送信すると、顔が正しく検出されます。
しかし、170 枚の画像を追加して最終的な画像をクラウド ビジョン API に送信すると、顔は検出されません。
注: ファイル サイズは 4 MB の制限をはるかに下回っています。添付ファイルを参照してください
情報のリクエスト
Google の 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 は「throw new 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)