大学生にもなってカードショップにあしげく通っているキモオタクの皆さん、こんにちは。皆さんはプロキシ刷ってますか?まあ恐らく皆さん刷っていると思います。でもプロキシって刷るの面倒ですよね。
データを作って
印刷して
カッティングして
スリーブに入れる
めんどくせ~~~~~~!!!!!
家にプリンターないからコンビニまで行かなきゃいけないし変に完璧主義だからカッティングに時間かかるしそのくせ大した精度は出ないし…ポケモンカード引退を考える瞬間ですね。
ということで、どんなカードにでもなる「万能プロキシ」なるものを作成いたしました。openCVに含まれるarcuoというライブラリを使うことで、webカメラの映像からこのマーカーを認識することができます。なのでこのマーカーの上にカード画像を投影すれば……ということで
こんな仕組みのプログラムを作ります
動かすとこんな感じ
現実の盤面はこんな感じです
これを使えばわけわからんデッキを組むたびにインク代を払わなくてよくなるよ!
pythonで作りました。ソースコードはここです。中学生の女子が1週間で作ったから、粗さは許してね
マーカーのプロキシデータはここから
システム上No.50まで作れますが面倒なので15までしかありません。欲しい人がいたらコメントしてください。
一応exeファイルもあります。ウイルス判定されたりされなかったりするのであまりお勧めしません。vscodeか何かでビルドして使ってね!
使い方
まず、cam.pyを実行して使えるカメラを探査して設定します。openCVには映るカメラを自動で見つける機能がないのはなぜ?
起動すると認識しているカメラ一覧が出るので、動きそうな番号を確認します。
映像のウインドウが出たら、qで閉じます。
映ったらyを入力することで、プログラムが終了します。nで別のカメラを確認します。
次に、使いたいカード画像をcardsフォルダに入れておきます。その後load.pyを実行します。
何枚採用されるかを入力します。ディレクトリ内の画像の数だけ聞かれるので、答え終わるとカードの採用枚数がlist.txtに出力されます。実際の対戦中はこのテキストを見ながら、自分のハンドが何なのかを確認します(現実のカードはマーカーと番号のみしか印刷されていないため)。
この作業が終わったら、main.pyを実行することで、プロキシの上にカード画像が出力される映像のウィンドウが表示されます。これを画面共有して対戦してください。
こうやって手順をまとめるとクッソ使いづらいですね、ごめんなさい。多分これUnityで作った方がよかったんじゃないか?
お付き合いいただきありがとうございました。動かない、使い方がわからない、こんな機能が欲しいなどありましたらお気軽にぼくのTwitterアカウントまでお問い合わせください。
それでは。