【MediaPipe + OpenCV】ジェスチャ入力方式のソフトウェアキーボードを作る (2) -ジェスチャ基本入力編-
前回の記事はこちら。
ログを出力するところまで出来ている状態です。
今回は「ジェスチャ基本入力編」ということで、
ここからキーボード作成/ジェスチャ入力まで一気に実装していきます。
現状の暫定版demo
実装
全実装は以下。
(制作途中のものです)
各指に対するキーマップは以下の通りです。
・左手
小指... Q,A,Z
薬指... W,S,X
中指... E,D,C
人差し指... R,F,V,T,G,B
・右手
人差し指... Y,H,N,U,J,M
中指.. .I,K
薬指... O,L
小指... P
各指と親指が触れるジェスチャをした場合に対応キーマップが選択され、
さらに複数回親指と触れさせることで特定のキーを選択します。
(demoをみていただくのが早いと思います)
左手人差し指、右手人差し指に関しては、今後何かしらのジェスチャで左右のキーを選択できるようにしていきたいと思います。
*
簡単にコードの解説をすると、
createKeyboardでキーボードを作成/表示し、
judgePressKeyで各指が親指に触れたかどうかを判定し、
lightOnKeysで指のキーマップに対抗したキーを選択しています。
コードとしては「とりあえず動く」レベルのもので、まだまだ改良の余地ありですね。
*
最後に、以下のコマンドで実行します。
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/multi_hand_tracking:multi_hand_tracking_cpu
export GLOG_logtostderr=1
bazel-bin/mediapipe/examples/desktop/multi_hand_tracking/multi_hand_tracking_cpu
demoのように動けば成功です。
次回
今後は、左手人差し指、右手人差し指に関して、ジェスチャで左右のキーを選択できるよう改良していきます。
また、精度の改善も行っていく予定です。