久しぶりに画像解析「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でボールの輪郭描画が参考になるかもしれません。
※このやり方は、色でおおざっぱにボール位置を識別する方法で、背景とボールの色に差がないと使えません。