一、
前言和准备见mediapipe教程4,这篇博客开门见山,直接来步骤;
二、在安卓上运行mediapipe的handTracking
参考网址:
步骤:https://google.github.io/mediapipe/getting_started/android_archive_library.html
代码:https://gitee.com/luo_zhi_cheng/mediapipe_multi_hands_tracking_aar_example
实际步骤(与教程4类似):
(1)在路径mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_hand/下新建BUILD文件,并复制下面内容
load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar")
mediapipe_aar(
name = "mediapipe_hand_tracking",
calculators = ["//mediapipe/graphs/hand_tracking:mobile_calculators"],
)
(2)生成安卓aar文件(生成的文件在bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_hand/目录下),命令:
bazel build -c opt --strip=ALWAYS --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --fat_apk_cpu=arm64-v8a,armeabi-v7a mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_hand:mediapipe_hand_tracking
解释见教程4;
(3)生成Mediapipe的二进制图(生成文件路径为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
(4)新建Android Stdio工程,选择“Empty Activity”,这里我的工程名改为:aar_hand1,复制刚刚编译生成的aar文件到Android Stdio工程的app/libs/目录下;
刚刚编译生成的aar文件路径为:bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_hand/mediapipe_hand_tracking.aar
(5)复制以下文件到Android Stdio工程的app/src/main/assets/目录下
(具体需要复制什么,见mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu/BUILD中的assets)
bazel-bin/mediapipe/graphs/hand_tracking/hand_tracking_mobile_gpu.binarypb
mediapipe/modules/hand_landmark:handedness.txt
mediapipe/modules/hand_landmark:hand_landmark.tflite
mediapipe/modules/palm_detection:palm_detection.tflite
(6)打开安卓工程的app/build.gradle,修改其中的内容参考教程4;
(7)Android Stdio工程其他文件
1、AndroidManifest.xml,2、activity_main.xml,3、MainActivity.java,4、其他xml文件,如colors\strings\style\themes
复制https://gitee.com/luo_zhi_cheng/mediapipe_multi_hands_tracking_aar_example的相应文件;
然后根据教程4中写的注意事项,简要的修改即可;
(8)编译,运行
结果:在我的破安卓机顶盒上运行起来有点卡,可能是因为硬件性能不行;
运行时,如果检测到手,则会打印landmark的数量和位置,如下图;