我正在尝试使用云视觉 API,并且能够成功发出请求,但我的响应返回为空,即使 API 文档中提供了测试图像也是如此。
请求正文:
const imagePath = `gs://[bucket_name]/faulkner.jpg`;
const requestObject = {
requests: [
{
image: {
source: {
gcsImageUri: imagePath
}
},
features:[
{
type: 'LABEL_DETECTION',
maxResults: 100
}
]
}
]
};
响应正文:
{
"responses": [{}]
}
我什至尝试过使用云 API 控制台并复制请求字段,但这也行不通
const apiKey = 'myAPIKey';
const fields = `fields=responses(labelAnnotations)&`;
const visionAPI = `https://vision.googleapis.com/v1/images:annotate?${fields}key=${apiKey}`;
如有任何帮助,我们将不胜感激。
最佳答案
我遇到了这个确切的问题,这对我有用...
- 您不需要 OAuth,只需要一个 API key 。
这是我做错了...
在我的 HTTP 调用中,我需要将我的请求包装在一个新的对象字面量中,如下所示
{data: requestBody }
澄清一下,
// My old call
HTTP.call("POST", "https://vision.googleapis.com/v1/images:annotate?key=myAPIKey", requestBody, myCallback);
// To my new call
HTTP.call("POST", "https://vision.googleapis.com/v1/images:annotate?key=myAPIKey", {data: requestBody}, myCallback);
// reqeustBody example
{
"requests":
[
{
"features":
[
{
"type": "LABEL_DETECTION"
}
],
"image":
{
"source":
{
"gcsImageUri": "gs://myBucketNameHere/myDemoImageNameHere.jpg"
}
}
}
]
}
注意:一些需要做的事情。
- 图像在您的 Google Cloud Platform 存储桶中。
- 图像名称在调用中与在存储中一样准确。
- 图像必须有要检测的东西,即如果使用 FACE_DETECTION,图像必须有人脸。
- Google Cloud Platform Storage 中的图像必须被选中以公开共享。
我对名为 demo-image.jpg 的图像使用与上面完全相同的调用,现在我包装了 requestBody 后一切正常。
关于javascript - 来自 Google Vision API 的空响应以及存储在 Google Cloud Storage 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687208/