【Poke-Controller】画像の色取得(HLS)とマスキングをするサンプルプログラム
はじめに
気軽に色の取得やマスキングを試したい!
そんな思いから、読み込んだ画像の色の取得やマスキングをするサンプルプログラムを作りました。
ダウンロードリンクはこちらです。
何が出来るの?
次の3つができます。
1.指定した画像を表示する
2.クリックした箇所の座標と色情報(HLS)を表示する
3.指定した色情報(HLS)で画像をマスキングする
過去に公開した色検知プログラムを改造して、他のポケモンに応用したいときに便利です。
準備
ダウンロードしたファイル「mask_HLS.py」は下記に配置してください。
パス:Poke-Controller-master\SerialController\Commands\PythonCommands
使い方
実行するとファイル選択画面が開きます。
表示したい画像を選んでください。
選択した画像が表示されます。
画像をマウスでクリックすると、クリックした箇所の色情報(HLS)と座標が出力されます。
クリックするたび左下のエリアに追加で出力されるので、値を比較するのに便利です。
画像のクリック時、取得した色情報(HLS)に応じて次のパラメータの値も変化します。
・HLSの下限値
Hmin:取得したH - 5
Lmin:取得したL - 30
Smin:取得したS - 30
・HLSの上限値
Hmax:取得したH + 5
Lmax:取得したL + 30
Smax:取得したS + 30
このパラメータは、スライドバーを直接操作して値の変更もできます。
マスキングの調整をするとき、Hはひかえめ(1〜5)、LとSはそれなり(5〜30)の幅で値を変えてみると良いかも。
「マスキングする」ボタンを押下すると、このパラメータの範囲にある色が白色に、それ以外の色が黒色に変わります。
ボタンを押下すると、右下のテキストボックスに次の値が出力されます。
lower=〜
upper=〜
白色の数:〜
これらの値は、過去に公開した色検知プログラムを改造して、他のポケモンに応用したいときに使ってください。
なお、「元画像に戻す」ボタンを押下すると、マスキングする前の画像に戻ります。
おまけ
欲しい色をマスキングするコツ。私も知りたい。
色といえばRGBですが、今回はHLSを使っています。
理由は、色味の環境差異を考慮しやすいからです。
ポケモンSVでは、同じポケモンでも朝は明るく、夜は暗く表示されます。
そのため、どの時間帯でもコダックの黄色を検知するには、朝の明るい黄色から夜の暗い黄色まで、広く検知対象にする必要があります。
RGBだと、R, G, Bすべてを調整する必要があり、どの色をどれだけ変えれば明るさの違う色が含まれるのか、直感的な判断が難しそうです。
HLSだと、Hを変えずにLやSを増やすと色を明るく、減らすと色を暗くすることができます。
そのため、RGBよりも調整が優しいです。
ただ、これは特定の色に近い色も検知したいときの話です。
いつでも色味が変わらない場合や、モノトーンを検知したい場合はRGBを使った方が楽かもしれません。
今回のツールはシンプルな作りでHLSのマスキングしかできませんが、良ければRGBのマスキングも出来るように改造してみてください。
あとがき
しばらくゲームをする余裕がなかったので、今回はツールでお茶を濁しました。
過去に公開した色検知プログラムを手軽に改造してもらえたら嬉しいです。
自動化を推進してくださる方々、ありがとうございます。
このプログラムが何かの役に立てば嬉しいです。
ご意見はこちら
プログラムが無事に動いたこと、上手く動かなかったこと、
記事の内容でわかりにくいことなど、情報があれば参考にしたいです。
とはいえ、名前を出して発言するのは勇気がいるかもしれません。
そこで、匿名でも意見ができるよう、マシュマロを開放しました。
動作報告やプログラム/記事についてのご意見などを募集したいです。
記事やプログラムの分かりにくい場所を補足するなどの参考にします。
ただ、情報収集が目的のため、個別の返信は予定していません。
個別に返信が必要な場合はマシュマロではなく、記事のコメントやDMでご連絡ください。