前置き
Magic: the Gatheringが好きです。
ウェザーライト、5th、テンペスト、ストロングホールド。
休み時間に友達と対戦していました。
環境1が変わりそこからしばらく離れていましたが
最近また興味を持って情報を追っていました。
10数年の歳月、知らぬ間にこんなにエキスパンションを重ねていたなんて!2
オークションで、引退する方からカード2.5万枚ほど購入してみました。
しかしダンボールを開けてみると殆どが役に立たないコモン・アンコモン...3
この悔しい思いを何とかプラスに転ずべく
何かMTGのアプリを作ろうと思い立ち、このエントリに至ります。
(大量のコモンを手にPauper4にも目覚めますがそれはまた別の話)
画像認識ライブラリについて
ギャップロ様提供の画像認識ライブラリを利用しました。
画像認識ライブラリ
なんと特徴点データ生成ツールまであります!
これはありがたい。
サンプルを動作させるまで
Xcode6.4使用。
画像認識ライブラリダウンロード
画像認識ライブラリ
ページ内の「画像認識ライブラリ for iOSをダウンロード」でファイル一式をダウンロード。
展開し適当なディレクトリに中身をコピー。
/framework/GPImageRecognitionEngine.framework.zip を展開しておく。
OpenCVダウンロード
こちらからダウンロード。
2015/7時点で最新版は3.0でしたが、ビルドエラーが出たので2.4.9を使用。
展開し、中身を先程のディレクトリの /framework と同階層に配置。
プロジェクト設定変更
General:
Bundle Identifierを自分の開発用の値に変更
Deployment Target を 8.4 に変更
Build Settings:
Valid Architecturesにarm64を追加
Code Signing Identity、Provisioning Profileを自分の開発用の値に変更
Build Phases:
Link Binary With Librariesに以下を追加
GPImageRecognitionEngine.framework
opencv2.framework
これで実機で動かせるはず。
動作確認
サンプルプロジェクトを起動するとカメラが動作状態となります。
用意されているテスト画像を写してみます。
/sample project/marker
無事動きました!
カードの特徴点データ作成
DatasetCreatorを起動します。
サンプルデータとして、今回は「トロスターニの召喚士/Trostani's Summoner」を使用。
トロスターニの召喚士/Trostani's Summoner
召喚と同時に3体のトークンを出す強力なカードです。
項目追加から読み込ませ
タグを設定し
認識器「GPFineRecognizer」を選択し
最大特徴点数:400で
「データセット出力」
しかしカメラにカードを写しても認識せず。
今度はカードの上半分のみの画像ファイルを作りデータ再作成。
試したところ
認識しました!
おわりに
当初はエキスパンションシンボルを認識する機能を作っていましたが
「標識や記号、境界線が曖昧な色合いの画像は認識できない場合があります。」
と、画像認識ライブラリが不得手なパターンだったようで、思い通りに動作しませんでした。
何だか面白そうだな、と思ってもらえたら幸いです。
あとはすべてのカードの画像特徴点データを作れば良いのかな。
-
MTGの環境ではなく私の環境 ↩
-
私はオークションで騙されたのだろうか... いやいや説明文を読めばそう取れなくもないし、騙されたとは言えないか... しかし割高な買い物だったな。 ↩
-
Pauperについては MTG Pauperブログ”シミてく(゜-゜)” で詳しく楽しく解説されています。 ↩