
久しぶりに画像解析「Google Cloud Vision API」を試してみました。
1年前はβ版で、欲しかった機能がまだなかったのですが、今は充実しているかもしれません。
ボールの座標を取れるか?
顔の座標を取ることはできるのですが、物体の座標を取ることはできるのでしょうか?
この画像を解析してみます。

赤いボール2つ、白いボール1つ、青いボール1つ。
すごく分かりやすそうな画像です。
「Google Cloud Vision API」に解析をお願いするときに、解析の種類を決める必要があります。
Google Cloud PlatformのFeature Typeの項目で、解析の種類一覧があるので選びます。
ボール検出に使えるのは・・・
LABEL_DETECTION(カテゴリ検出)
IMAGE_PROPERTIES(色検出)
くらいでしょうか。
「Google Cloud Vision API」に解析お願いします。
・・・。
JSONが返ってきました。
{
"responses": [
{
"labelAnnotations": [
{
"mid": "/m/01sdr",
"description": "color",
"score": 0.9688637
},
{
"mid": "/m/01fklc",
"description": "pink",
"score": 0.9311038
},
{
"mid": "/m/06fvc",
"description": "red",
"score": 0.9167749
}
],
"imagePropertiesAnnotation": {
"dominantColors": {
"colors": [
{
"color": {
"red": 115,
"green": 115,
"blue": 111
},
"score": 0.35743248,
"pixelFraction": 0.40888888
},
{
"color": {
"red": 58,
"green": 112,
"blue": 226
},
"score": 0.055576902,
"pixelFraction": 0.0024603175
},
{
"color": {
"red": 205,
"green": 188,
"blue": 215
},
"score": 0.050076347,
"pixelFraction": 0.001984127
},
{
"color": {
"red": 242,
"green": 240,
"blue": 249
},
"score": 0.04152352,
"pixelFraction": 0.005079365
},
{
"color": {
"red": 222,
"green": 50,
"blue": 93
},
"score": 0.017801886,
"pixelFraction": 0.005873016
},
{
"color": {
"red": 162,
"green": 36,
"blue": 58
},
"score": 0.0063587446,
"pixelFraction": 0.0037301588
},
{
"color": {
"red": 192,
"green": 70,
"blue": 108
},
"score": 0.0024180475,
"pixelFraction": 0.0015873016
},
{
"color": {
"red": 99,
"green": 96,
"blue": 89
},
"score": 0.08766081,
"pixelFraction": 0.39690477
},
{
"color": {
"red": 74,
"green": 119,
"blue": 211
},
"score": 0.039106563,
"pixelFraction": 0.0018253968
},
{
"color": {
"red": 233,
"green": 225,
"blue": 248
},
"score": 0.035073526,
"pixelFraction": 0.0018253968
}
]
}
},
"cropHintsAnnotation": {
"cropHints": [
{
"boundingPoly": {
"vertices": [
{},
{
"x": 1279
},
{
"x": 1279,
"y": 718
},
{
"y": 718
}
]
},
"confidence": 0.79999995,
"importanceFraction": 1
}
]
}
}
]
}
カテゴリが「色」「ピンク」「赤」って!?
せめて「ボール」って答えてほしかったところ。
色の値がいっぱい返ってきましたが、ボールの座標はとれないようです。
「Google Cloud Vision API」は、非常に簡単に使えるのですが、物体検知には向いていない気がします。
学習コストがかかりますが、あきらめて「OpenCV」を学ぶか・・・。

KODA様
最近Google Vision APIを、Pythonで使いたいと思っている山田と申します。
紹介されておりましたボールの座標をJSONで得るコードを教えていただけませんでしょうか?
山田様
ボールの座標をJSONで得ることは、結局OpenCV+Pythonで行いました。
コードを探してみます。少々お待ちください。
ボールの認識(座標を知る)については、OpenCVでボールの輪郭描画が参考になるかもしれません。
※このやり方は、色でおおざっぱにボール位置を識別する方法で、背景とボールの色に差がないと使えません。