Я новичок в Google Cloud Vision API и хотел извлечь цвета из изображения, используя их доминирующую цветовую функциональность. ниже мой код, который основан на Блог Терренса Райана
$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 docs: количество возвращаемых результатов) на любое значение ничего не влияет на ответ. Количество результатов фиксируется на 10 цветах, даже если я установил параметр меньше 10, и даже если я изменил изображение. Документация API Google ничего не говорит об этом, поэтому мне было интересно, если кто-нибудь из вас, ребята здесь, испытал это.
Я просто попробовал это сам, и у меня такие же результаты.
При выполнении LABEL_DETECTION и, ограничивая результаты до 1, например, я получаю 1 результат.
выбирающий IMAGE_PROPERTIES и сокращение maxResults, кажется, не влияет на результат.
Я попытался с небольшим изображением с несколькими цветами и получил только 6 результатов.
Результаты структурированы следующим образом:
{
"color": {
"red": 198,
"green": 218,
"blue": 199
},
"score": 0.0016616513,
"pixelFraction": 0.0016666667
}
Я предполагаю, что у них есть точка среза счета, где они отбрасывают другие результаты.
Просто из любопытства, почему вы хотите извлечь это много доминирующие цвета? Это не предназначено для извлечения всех цветов из вашего изображения. Это то, что вы хотите достичь?
Других решений пока нет …