我是 Google Cloud Vision API 的新手,我想使用它们的主色功能从图像中提取颜色。下面是我的代码,它基于Terrence Ryan 的博客
$cvurl = "https://vision.googleapis.com/v1/images:annotate?key=API_KEY";
$data = file_get_contents($cache_job);
$base64 = base64_encode($data);
//Create this JSON
$r_json ='{
"requests": [
{
"image": {
"content":"' . $base64. '"
},
"features": [
{
"type": "IMAGE_PROPERTIES",
"maxResults": 200
}
]
}
]
}';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $cvurl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $r_json);
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ( $status != 200 ) {
die("Error: $cvurl failed status $status" );
}
该代码有效,但我遇到了一些问题。有一些颜色显然在图像上,但未包含在 API 响应中。所以我认为增加结果的数量可以解决这个问题,但后来我发现将“maxResults”(Google API 文档:要返回的结果数量)参数更改为任何值都不会影响响应中的任何内容。即使我将参数设置为小于 10 并且即使我更改了图像,结果的数量也固定为 10 种颜色。谷歌的 API 文档没有说任何关于它的内容,所以我想知道你们中是否有人经历过。