# XD画像認識関連ライブラリ PokemonXDImageLibrary 紹介 ポケモンXDで用いる画像認識関連の処理を集めたライブラリを公開しました。現状、いますぐバトルの生成結果分析と個体値情報の確認に対応しています。 内部で最適化を施すため、アスペクト比や黒枠についてキャプチャデバイスごとに設定する必要をなくすことができます。 [![mukai1011/PokemonXDImageLibrary - GitHub](https://gh-card.dev/repos/mukai1011/PokemonXDImageLibrary.svg)](https://github.com/mukai1011/PokemonXDImageLibrary) ## サンプル |source|result| |---|---| |GC 4:3(RCA-HDMI変換経由)<br/><img src="https://i.imgur.com/owFCu5N.png" width="300px">|<img src="https://i.imgur.com/lNQzfoz.png" width="300px">| |Wii 16:9<br/><img src="https://i.imgur.com/xStTxwC.jpg" width="300px">|<img src="https://i.imgur.com/3YYFNZH.png" width="300px">| |GC 4:3(S端子 GV-USB2)<br/><img src="https://i.imgur.com/XzWj7LQ.png" width="300px">|<img src="https://i.imgur.com/BM9AUQm.png" width="300px">| |Dolphin<br/><img src="https://i.imgur.com/4UWjqwF.png" width="300px">|<img src="https://i.imgur.com/rbovp6c.png" width="300px">| ちなみに緑枠は判定が怪しかったものです。数字を取れなければ、自動的に判定枠を上下にスライドして取れないか試します。 ## 解説 ライブラリを使用するためには、PokemonXDImageLibraryのnupkgの他に、OpenCvSharp4及びOpenCvSharp4.runtime.*をプロジェクトに追加する必要があります。 ```csharp= using OpenCvSharp; using PokemonXDImageLibrary; ``` PokemonXDImageLibraryの機能は、OpenCvSharp.Matクラスの拡張メソッドである - `(int HP, int Attack, int Defense, int Speed, int SpAtk, int SpDef) Mat.GetStats()` - `((int Index, int[] HP) P1, (int Index, int[] HP) COM) Mat.GetQuickBattleParties()` に集約されています。それぞれRectの配列を引数に取るオーバーロードを用意していますが、最適化後の画像に対する範囲を指定する必要があるので、基本的にはデバッグにしか使えません。 最適化後のサイズは、Dolphinが描画する5:4に合わせています。実機ではなくエミュに合わせているのは、こちらのほうがサンプルを集めやすく状況を再現しやすいからです。 `MatOptimizeExtension.ReferenceWidth` 及び`MatOptimizeExtension.ReferenceHeight` を参照のこと いろんな条件の画像を集めてテストしていますが、通らないこともあると思います。画像付きのIssueやPRがあれば対応します。 ## 謝辞 テスト画像を提供してくださったてあさん([@teAraNraNra](https://twitter.com/teAraNraNra))に感謝いたします。ご協力ありがとうございました。