前回までのあらすじ
- 雀魂の画面のスクリーンショットを持ってくる
- OpenCVのテンプレートマッチングでスクショから牌姿情報を持ってくる
という方針を決めたのはいいものの、いきなり1. でつまづく。
雀魂のスクショを取ってこれないのである。
参考にした記事だとスクショなんてスッと取ってきてるんだけど、node.jsになると途端に難しいらしい。
スクショ難民
さて、色々調べた時に巡回したページを挙げる。
C#での画面キャプチャの取得方法を徹底解説!
https://www.fenet.jp/dotnet/column/language/4633/
Pythonでスクリーンショットを取得して指定フォルダに保存する
URL長いので省略
特に二番目のやつ見てくださいよ奥さん。
Pythonならわずか数工程で画面のスクショが保存できるらしいですよ。
- pipで
pillow
をインストールする -
ImageGrab
モジュールをインポートする -
ImageGrab.grab().save('screenshot.jpg')
を実行
今までの苦労はなんだったんだー!?
ちなみにこんなサイトもありました。
https://www.redbubble.com/shop/node+js+pillows
node.jsのpillow(まくら)
なんつって
閑話休題
pythonとの連携
【Node.js入門】python-shellによるNode.jsとPythonのデータ連携方法まとめ
https://www.sejuku.net/blog/84736
こちらによると、python-shellというモジュールを使用すると、node.jsからpythonのコードが実行できるようです。
少し光明が見えてきました。
すなわち
こーんな感じの実装が(多分)できるという訳ですね!
ただ、前回のteratailの回答者様曰く、
速度は落ちますが、C++のソースコードをWASMの技術で無理やりJavaScriptに加工したOpenCV.jsなるものも存在します。
とのことなので、下のようにpythonの方でopenCVを使った方が素直?高速?になる気もします。
先人の教えもありますし。
ちらっと見たところpythonからnodeにわたす情報は、python側でもprintで渡すみたいなんですよね。
画像情報をprintするのって、なんか気持ち悪いし、
今後の方針
- pythonとpillowを使ってスクリーンショットのデータを取得
- pythonとopenCVを使って牌姿情報を取得
- node.jsとpython-shellを使って、pythonコードを実行し牌姿情報を受取る
という流れで進めたいと思います!
次回はpythonとpillow回です。