前回の記事
少しずつ開発を進めているポケモン剣盾バトルログツール(仮)ですが、現在の進捗をまとめておきます。
ポケモン剣盾用の耐久努力値調整ツールを作成しました! ぜひ使ってみてください!
進捗報告
前回のまとめ
このツールを開発するにあたって、以下の機能の実装が必須であると記載しました。
- キャプチャーボードから映像を取得する機能
- 画像から文字を抜き出す機能(OCR)
- 類似画像を検索する機能
- ダメージ計算機能(すでにAPI化済み)
- データをサーバへ送受信する機能
そのうち、前回達成した項目は
- キャプチャーボードから映像を取得する機能
- 画像から文字を抜き出す機能(OCR)
の2点となります。
今回は
- 類似画像を検索する機能
の実装をしました。
実装機能紹介
そもそもなぜ類似画像の検索機能が必要なのかというとですが、
一番の目的としては「相手のPTのアイコンからポケモン名を抽出したいから」です。
ダメージ計算をするにしても、相手のPTをログに書き残すにしても、画像のままだと無理なので、それをテキストに変換する必要があります。
よって、あらかじめポケモンのアイコン画像とポケモン名を紐づけた認識用ファイルを作成しておいて、類似画像検索により相手のポケモンのアイコン画像からそれがどのポケモンなのかを判断してポケモン名を返す、という処理が必要になります。
というわけでまずは類似画像検索の実装。
あとは、ポケモンのアイコン画像をハッシュ化したファイルを作成しておく。
んで、これをツールに読み込ませればアイコンからポケモン名を引っ張ってこれるようになります。
実際に動かしてみるとこんな感じ。(13秒~)
ポケモン剣盾用バトルロガー(仮)の開発進捗具合。アイコンからポケモンを自動的に認識したり、ログや相手のPT画像を自動保存したり、現在の画面の状態を自動的に認識したりするようにしました #ポケモン剣盾 #プログラミング pic.twitter.com/4QBas6Qh10
— ばっち (@vatch_px) March 11, 2020
認識率は今のところ99%以上です。
・・・なぜかドラピオンだけ全然認識してくれないです。解せぬ
ともかく、これで相手のポケモン名を取得できるようになったので、これを利用してダメージ計算したり、統計を取ったりすることができるようになりました。
次回目標
ダメージAPIを叩くにしても、ポケモンの統計を取るにしても、まずはサーバとの通信ができないと不可能です。
ので、次回の更新はサーバと通信できるようになってからかなあ・・・
あと、相手の選出を自動で記録する機能も作りたいのですが、そこで壁になるのが言語。
英語や中国語(漢字)の検出はなんとかなっても、ハングルがどうしても検出できない。
何で相手のポケモン名表示の言語統一機能がないんだろうか・・・
まとめ
- 類似画像処理機能によるポケモン名抽出機能を追加
- あとはログを保存したり画像を自動で保存したりもできるようにしました
- 次回はサーバ通信の機能を追加したい。。
コメント