一 编译环境
Ubuntu 18.04
官网说明
安装Bazel
版本说明
我直接改成了5.2.0
下载地址 Releases · bazelbuild/bazel · GitHub
bazel build target 和 bazel run target
bazel build target是编译目标。bazel run target 是编译并运行目标。
直接下个 二进制文件 bazel-5.2.0-linux-x86_64
二 下载mediapipe源码
git clone https://github.com/google/mediapipe
v0.8.10.2 (其它版本不一定 匹配bazel版本)
安装依赖
sudo apt-get install build-essential openjdk-11-jdk python zip unzip
配置android sdk ndk
bash ./setup_android_sdk_and_ndk.sh
30.0.3
编译过程中可能下载pyhton 部分库失败手动安装
如 安装numpy npm
三 编译
创建 Mediapipe 生成 Android aar 的编译文件,命令如下。
cd mediapipe/examples/android/src/java/com/google/mediapipe/apps/
mkdir buid_aar && cd buid_aar
vim BUILD
编译文件 BUILD 中内容如下,
name
是生成后 aar 的名字,calculators
为使用的模型和计算单元,其他的模型和支持计算单元可以查看mediapipe/graphs/
目录下的内容,在这个目录都是 Mediapipe 支持的模型。其中目录hand_tracking
就是使用到的模型,支持的计算单元需要查看该目录下的 BUILD 文件中的cc_library
,这里我们是要部署到 Android 端的,所以选择 Mobile 的计算单元。本教程我们使用mobile_calculators
,这个只检测一个手的关键点,如何想要检查多个收修改成这个计算单元multi_hand_mobile_calculators
。
load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar")
mediapipe_aar(
name = "mediapipe_hand_tracking",
calculators = ["//mediapipe/graphs/hand_tracking:mobile_calculators"],
)
回到mediapipe根目录 编译输出aar
bazel build -c opt --fat_apk_cpu=arm64-v8a,armeabi-v7a \
//mediapipe/examples/android/src/java/com/google/mediapipe/apps/buid_aar:mediapipe_hand_tracking
执行以下命令生成 Mediapipe 的二进制图,命令参数同样是上面的 BUILD 中,其中路径不变,变的是路径后面的参数。这次我们需要寻找的是
mediapipe_binary_graph
中的name
,根据我们所要使用的模型,同样这个也是只检测单个手的关键点,多个手的使用multi_hand_tracking_mobile_gpu_binary_graph
。选择对应的name
。成功之后会生成bazel-bin/mediapipe/graphs/hand_tracking/hand_tracking_mobile_gpu.binarypb
。
bazel build -c opt mediapipe/graphs/hand_tracking:hand_tracking_mobile_gpu_binary_graph
注意
1 修改依赖仓库
vi WORKSPACE 这里是重点。
用下面国内的镜像仓库,替换掉google的,
之前旧的
repositories = [
"https://maven.google.com",
"https://dl.google.com/dl/android/maven2",
"https://repo1.maven.org/maven2",
"https://jcenter.bintray.com",
],
新的
repositories =
[
"https://maven.aliyun.com/repository/google",
"https://maven.aliyun.com/repository/central",
"https://maven.aliyun.com/repository/public",
],
之后整个编译过程无须翻墙
2 修改opencv-android-sdk 300M的东西愣是下不下来 我直接迅雷下了
虚拟机编译大概不到一小时
android中集成参照官方文档
mediapipe/hello_world_android.md at master · google/mediapipe · GitHub