无论什么图像以及maxResults参数的值,Google Cloud Vision IMAGE_PROPERTIES都会返回10种颜色/结果

时间:2016-10-17 05:42:37

标签: php google-cloud-vision

我是Google Cloud Vision API的新手,我想使用其主色功能从图像中提取颜色。以下是我的代码,它基于Terrence Ryan's Blog

    $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种颜色。 Google的API文档没有说明任何内容,所以我想知道你们这些人是否经历过它。

1 个答案:

答案 0 :(得分:1)

我自己尝试了这个,但结果相同。 在执行 LABEL_DETECTION 并将结果限制为1时,我得到1个结果。 选择 IMAGE_PROPERTIES 并减少maxResults似乎不会影响结果。

我尝试使用颜色很少的小图片然后只收到了6个结果。 结果以这种方式构建:

           {
              "color": {
                "red": 198,
                "green": 218,
                "blue": 199
              },
              "score": 0.0016616513,
              "pixelFraction": 0.0016666667
            }

我的猜测是他们有一个得分的截止点,他们放弃其他结果。

出于好奇,为什么要提取这么多主色?这并不意味着从图像中提取所有颜色。这是你想要达到的目标吗?