一、
前言见mediapipe教程4;
准备,官方给的mediapipe/examples/android/src/java/com/google/mediapipe/apps/posetrackinggpu/MainActivity.java并没有调相机的code,只有打印输出关键点坐标的code,并且我在后续把调用相机的code和官方输出关键点坐标的这些code加到我的android stdio工程后,运行时发现官方打印输出关键点坐标的code有问题;于是我在网上找到了可用代码,分别是下面两个地址,我测试了第一个是没问题的:
https://gitee.com/luo_zhi_cheng/Mediapipe_pose_Tracking_AAR_example
https://gitee.com/luo_zhi_cheng/Mediapipe-android-pose-tracking
最后,这篇博客也开门见山,先直接来步骤;
二、在安卓上运行mediapipe的poseTracking
(1)在路径mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_pose/下新建BUILD文件,并复制下面内容
load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar")
mediapipe_aar(
name = "mediapipe_pose_tracking",
calculators = ["//mediapipe/graphs/pose_tracking:pose_tracking_gpu_deps"],
)
(2)生成安卓aar文件(生成的文件在bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_pose/目录下),命令:
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_pose:mediapipe_pose_tracking
解释见教程4;
(3)生成Mediapipe的二进制图(生成文件路径为bazel-bin/mediapipe/graphs/pose_tracking/pose_tracking_gpu.binarypb)
bazel build -c opt mediapipe/graphs/pose_tracking:pose_tracking_gpu_binary_graph
(4)新建Android Stdio工程,选择“Empty Activity”,这里我的工程名改为:aar_pose1,复制刚刚编译生成的aar文件到Android Stdio工程的app/libs/目录下;
刚刚编译生成的aar文件路径为:bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_pose/mediapipe_pose_tracking.aar
(5)复制以下文件到Android Stdio工程的app/src/main/assets/目录下
(具体需要复制什么,见mediapipe/examples/android/src/java/com/google/mediapipe/apps/posetrackinggpu/BUILD中的assets)
bazel-bin/mediapipe/graphs/pose_tracking/pose_tracking_gpu.binarypb
mediapipe/modules/pose_detection/pose_detection.tflite
mediapipe/modules/pose_landmark/pose_landmark_full.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_pose_Tracking_AAR_example里面的文件内容过去就可以,
注意这次app/src/main/java/com/example/aar_pose1/下不仅仅有一个.java文件;
(8)编译,运行
结果:在我的破安卓机顶盒上运行起来有点卡,可能是因为硬件性能不行;
(9)更多
mediapipe官网提供的人体关键点检测模型分为lite、full、heavy三个,由快到慢,由不准到准,可以自己选择,模型在路径mediapipe/modules/pose_landmark/下;
而配置下默认是使用full模型,想要使用不同的模型,请参考:https://blog.csdn.net/luozhichengaichenlei/article/details/117297062中的第2点;