raspbian のほうのコンパイルに時間かかって暇なので、先にWindowsで試してみる。Windows は WSL でしか mediapipe はサポートされてないようなので、WSL を有効化して Ubuntu 18.04 を入れるところからやる。
結論
WSLがカメラデバイスに対応してないそうな。
https://ja.stackoverflow.com/questions/59505/wslubuntu%E3%81%8B%E3%82%89web%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%9F%E3%81%84
無理やん。ファイルから読むようにすればできるかも。とりあえず手順だけ書いておく。
WSL の準備
主に下記の要約
https://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
Windows10 の PowerShell を管理者権限で起動して次のコマンドを実行する。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Microsoft Store で Linux とか Ubuntu とか検索して、ディストリビューションをインストールする。
インストールされたら「起動」を押して起動する。
mediapipe の準備
以下は、下記URLの通りにやるhttps://github.com/google/mediapipe/blob/master/mediapipe/docs/install.md#installing-on-windows-subsystem-for-linux-wsl
Installing on Windows Subsystem for Linux (WSL) の記述のところにあるとおりにする。
hello world のビルド
GPU なしでビルトする。
$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
mediapipe/examples/desktop/hello_world:hello_world
特に問題なくビルドと run できた。
Hand Tracking はどうなの
ビルドは通るけど、カメラにアクセス出来ないといわれて無理。
demo_run_graph_main.cc:52] Initialize the calculator graph.
demo_run_graph_main.cc:56] Initialize the camera or load the video.
demo_run_graph_main.cc:146] Failed to run the graph: ; capture.isOpened()(mediapipe/examples/desktop/demo_run_graph_main.cc:64)
WSL2になったらできるかも、ということらしい。
ファイルを読ませるのはどうか
$ bazel build -c opt mediapipe/examples/desktop/hand_tracking:hand_tracking_tflite --define MEDIAPIPE_DISABLE_GPU=1
$ export GLOG_logtostderr=1
$ bazel-bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_tflite --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop.pbtxt \
--input_side_packets=input_video_path=./in.mp4,output_video_path=./out.mp4
これは動いた。あらかじめ in.mp4 という動画を用意しておいて、上記コマンドで処理すると out.mp4 が出力される。リアルタイムにやるのと違ってフレーム飛びしない。
追伸
Android 用のバイナリをコンパイルすることはできる。ADBを使って apk を Android にアップロードとかもできる。けど、趣旨から外れるのでここではパス。
Ubuntu 20.04LTS の追記
- opencv2/core.hpp not found とか言われた場合:
$ sudo ln -s /usr/include/opencv4/opencv2 /usr/include/opencv2
としてみる。
- opencv2/optflow.hpp not found とか言われた場合:
$ sudo apt install libopencv-contrib-dev
としてみる。
- Numpy is Installed? とか言われた場合:
$ sudo apt install python-numpy
としてみる。
これくらいで通りました。