画像認識の解説(剣盾)
事前知識
いくつか事前に知っておくと良い知識を記載しておきます。
詰まった時に一度振り返り確認してもらえると良いと思います。
使用されている言語:Python
Poke-Controllerの開発や操作においては、主にPythonが用いられています。
Pythonを書く時の最低限の注意点:
・プログラムを書くときは、コメントアウト以外は半角英数を使います。(スペースも必ず半角を使う。)
・Pythonはインデントでプログラムの段落を整理するので、段落を合わせて書きましょう。インデントは、Pythonでは"半角スペース4つ"が一般的でTabキーなどを織り混ぜず統一すると良いです。
画像認識/テンプレートマッチング
画像認識とは、画面上にうつされているものをコンピュータが認識・識別することで、判断をさせることをいいます。Poke-Controllerの本家でも画像認識について詳しく説明されています。
画像認識と一口に言っても実は、画像を認識させたり、文字を認識させたり、特定の物体を検知させたりと様々な方法が用いられます。Poke-Controllerのプログラムでは特に「テンプレートマッチング」が用いられます。
テンプレートマッチングは、準備した画像と、現在の画面上を比較し、「どれだけ一致しているか」をみて動作を決定させます。
コードエディタのダウンロード
必須ではないのですが、コードを書き換えたり編集したりする時に見やすくするために、コードのエディターを用いるとより便利になります。
普段使用しているものでおすすめは、「Visual Studio Code」です。
画像認識の挙動確認
画像認識を用いたプログラムは、「Poke-Controller/SerialController/Commands/PythonCommands/ImageProcessingOnly/」の中にいれることになっています。
①IMG_Check.pyのダウンロード
下記のリンクよりIMG_Check.pyをダウンロードします。
このプログラムは、「左下のYY通信のマークを画像認識する」というものになっています。認識対象のYY通信の画像はデフォルトでPoke-Controllerに入っているものです。
※IMG_Check.pyのアップするファイルが間違っていたので更新しました。(2021.7.29 18:20)
② フォルダ内へファイルを移動します。
" Poke-Controller/SerialController/Commands/PythonCommands/ImageProcessingOnly/IMG_Check.py " という位置にファイルを移動させます。

③リロード
ファイルを移動させた後に、Command欄の「Reload」をクリックします。

④実行してみる
オフラインマークが出ている画面が表示されるようにし、CommandをIMG_Checkにし、「Start」をクリックします。

⑤結果を読む
数値はここの環境によって異なる場合がありますが、上記のように結果が得られるはずです。
返されている結果から以下の情報を得ることができます。
1. Start IMG_Check:プログラムをはじめます。
2. "Network_Offline.png" の画像の一致率を調べました。
3. ZNCC 0.9427657723426819 → 一致率は94.27...%でした。
4. True → 結果は "正" でした。
5. Check_END:チェックを終わりました。
特に、3の一致率が著しく低い場合は、キャプチャーボードなどの設定側での問題が発生している場合があります。その場合は、「よくあるトラブル」の内容をご確認ください。
よくあるトラブル
1.解像度の設定が違う
Poke-Controllerでは、1280*720の画像を使用しています。キャプチャボードの入力の仕方やSwitch側の設定で解像度が違う場合は、正しく判定できません。
解像度のチェックはPoke-Controllerで「Capture」をし、
"Poke-Controller/SerialController/Capture/"
内のキャプチャーした画像をプロパティから見てみると解像度が分かるでしょう。
2.画面が全体表示されていない
Poke-Controllerに表示されている画像が全画面表示でない場合は、正しく認識されません。縮小されて周りに黒い帯が出る場合は画像認識が正しく作動しない場合があります。「Switch本体設定の出力(設定>テレビ出力>画面の大きさ)」「キャプチャーボードの設定」の2箇所をチェックし、100%で表示されるように設定してください。(下記の画像のようなイメージです。)

上記の内容は、下記のnoteより動作確認の部分のみを移行してます。