我正在使用谷歌视觉API来检测人脸和裁剪相应的图像。这是我的代码,以获得裁剪的coordinates.but,它返回我所拥有的位图图像的最大大小。
Vision.Builder builder = new Vision.Builder(httpTransport, jsonFactory, null);
builder.setVisionRequestInitializer(requestInitializer);
Vision vision = builder.build();
BatchAnnotateImagesRequest batchAnnotateImagesRequest =
new BatchAnnotateImagesRequest();
batchAnnotateImagesRequest.setRequests(new ArrayList<AnnotateImageRequest>() {{
AnnotateImageRequest annotateImageRequest = new AnnotateImageRequest();
Image base64EncodedImage = new Image();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, byteArrayOutputStream);
byte[] imageBytes = byteArrayOutputStream.toByteArray();
base64EncodedImage.encodeContent(imageBytes);
annotateImageRequest.setImage(base64EncodedImage);
ArrayList<Feature> features = new ArrayList<>();
Feature cropHints = new Feature();
cropHints.setType("CROP_HINTS");
features.add(cropHints);
annotateImageRequest.setFeatures(features);
add(annotateImageRequest);
}});
Vision.Images.Annotate annotateRequest =
vision.images().annotate(batchAnnotateImagesRequest);
BatchAnnotateImagesResponse response = annotateRequest.execute();
Sting vertices=response.getResponses().get(0).getCropHintsAnnotation().getCropHints().get(0).getBoundingPoly().getVertices().toString())
} 顶点的结果
[{}, {"x":841}, {"x":841,"y":1499}, {"y":1499}]发布于 2017-11-30 16:18:44
这里您想要的是FACE_DETECTION特性,而不是CROP_HINTS。尝试在您的API请求中更改它,您将获得图像中人脸的裁剪坐标。
然后,您可能需要更改处理响应的方式,但是API请求将提供所需的解决方案。我建议您使用JSON进行这里测试,如:
{
"requests": [
{
"image": {
"source": {
"imageUri": "<YOUR_SAMPLE_IMAGE_URL>"
}
},
"features": [
{
"type": "FACE_DETECTION"
}
]
}
]
}https://stackoverflow.com/questions/47532783
复制相似问题