OpenCVでスプラトゥーン2の試合中の情報を解析するツールを作っている
https://qiita.com/Kazuma_Kikuya/items/4767afe581c94b0c16f1 に書いているツールと似たようなものを自分で作ろうとしている、という話です。
そのままのものを作るつもりはなくて、元記事はスタンドアローンだけど、僕が作ろうとしているのはwebアプリだ。(URLを共有すれば同じチームのメンバーも見れて便利〜〜になるはず。)
僕は画像解析をやったことがないけど、まあできるっしょと思ってやってみた。
最初は苦戦したけど結構できてきた。基本的には、テンプレートマッチングを使って画面の解析をしている。
(ちなみに、使っているRubyのOpenCVブリッジライブラリは2系しかサポートしていないので、ラベリングあたりの便利っぽい機能は使えていない。ひたすらテンプレートマッチングのみ。)
いかに誤判定しないか、みたいな実装を求められるのが地味におもしろい。(色の変わらない固定要素を見つけてテンプレートマッチングする、というだけですが。)
苦戦したところは、プレイヤーアイコンの座業を取得する処理。(アイコンの内側は微妙に色や特徴点が変わるので単純な2値化だと誤差がすごい。最初は輪郭点をとってみたけどノイズも入ってきて精度悪いし実装も汚かった。輪郭を抽出しやすくするように、2値化のパラメータを最適化する方法も考えたけど、実装が大変なわりに計算量が多そうだったからやめた。最終的には、ダメ元でファジーな白抜きのテンプレートでテンプレートマッチングをしてみたら、実装が簡単なのに精度がほぼ完璧になった。)
テストコードには、画像を入力して書けるので従来のwebアプリみたいな感じで開発ができている。ひさびさに熱中してる。
動くものができたらなにか書きたい。
-
category:
- 日記 tags: