Mediapipe编译

Mediapipe编译

项目仓

github地址:https://github.com/google/mediapipe

环境准备

  1. python环境,推荐使用anaconda,注意下载linux版本的

  2. bazel工具:

  3. Android SDK(mediapipe推荐使用30版本sdk):
  4. Android NDK(mediapipe推荐使用21版本ndk):

以上工具的安装强烈建议安装到一个指定的目录,这样后面构造环境变量PATHAndroid SDK Home以及Android NDK Home的时候也可以统一到一起。

编译前的准备状况

  • 切换到mediapipe项目的根目录
  • 配置Android SDK和NDK路径:
    • export ANDROID_HOME=/home/dogee/env/android/sdk
    • export ANDROID_NDK_HOME=/home/dogee/env/android/ndk/21/
  • 准备python环境,使用anaconda创建一个mediapipe专属环境,并切换到该环境下。
    • conda create -n mediapipe python=3.6
    • conda activate mediapipe
  • 安装mediapipe自带的python依赖库

    • pip install -r requirments.txt
  • 写入Android SDK和NDK环境到WORKSPACE

    • echo "android_sdk_repository(name = \"androidsdk\")" >> WORKSPACE
    • echo "android_ndk_repository(name = \"androidndk\", api_level=21)" >> WORKSPACE

编译命令

  • 有条件的话挂一个vpn,加速bazel下载github上依赖库的速度
  • 在mediapipe根目录运行:
    • bazel build -c opt --config=android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu

大约30min-60min可以完成编译,在bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu/handtrackinggpu.apk会产生对应的apk。

Solution下的项目

除了在mediapipe/examples/android/src下存在部分项目外,其实在mediapipe/examples/android/solution下存在着完整的gradle工程,针对手势识别的部分可以直接跑gradle task,生成的apk略有不同。

意义和目的

打通mediapipe的目的是在于学习这个古老(2019)的项目,从而看看有什么可以再做一下移植和需求突破的。

初步看下来可以学习地方还是很多的:

image-20220621145308633