mediapipe 编译用于android的aar包

简要记录下,怎么编译mediapipe用于android aar包。
一,mediapipe的介绍:
参考博客 https://www.it610.com/article/1290670846662221824.htm
参考官网,https://google.github.io/mediapipe/
本篇笔记以运动检测的使用为例:https://google.github.io/mediapipe/solutions/instant_motion_tracking
二,我尝试了在windows环境下编译,在环境都配置好之后(我以为都是OK的),编译桌面程序没有问题,就是执行命令:bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C://Python//Python38//python.exe" mediapipe/examples/desktop/hello_world
没有问题,但是编译android的aar包出错,错误提示:isystemexternal/androidndk/ndk/sysroot/usr/include -c external/org_tensorflow/tensorflow/lite/kernels/internal/spectrogram.cc -o bazel-out/android-armeabi-v7a-opt/bin/external/org_tensorflow/tensorflow/lite/kernels/internal/_objs/audio_utils/spectrogram.pic.o Execution platform: @local_execution_config_platform//:platform clang: error: no such file or directory: '/w' clang: error: no such file or directory: '/D_USE_MATH_DEFINES' clang: error: no such file or directory: '/std:c++14'

跟github issue列表中1287错误是一样的,
https://github.com/google/mediapipe/issues/1287
,参考1287问题的建议:“Note: building MediaPipe Android apps is still not possible on native Windows. Please do this in WSL instead and see the WSL setup instruction in the next section.”.
放弃了windows下的编译,尝试linux下去编译aar。
这里是借助在windows系统下安装的ubuntu系统。
三,记录下mediapipe的编译需要的环境配置步骤:
主要参考https://google.github.io/mediapipe/getting_started/android.html
配置ubuntu环境,https://google.github.io/mediapipe/getting_started/install.html#installing-on-windows-subsystem-for-linux-wsl
1,安装windows下ubuntu,可以参考:https://blog.csdn.net/lin20044140410/article/details/111996675?spm=1001.2014.3001.5501
2,Install Windows ADB and start the ADB server in Windows.,windows下的adb,这个就不细说了,在windows做android开发,windows上android的环境肯定是OK的。
3,Launch WSL.就是打开ubuntu终端,可以从start 菜单启动。
4,Install the needed packages.,

sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk

还有要安装numpy,如果是python3.8,执行:

sudo apt-get install python3-numpy

5,Install Bazelisk.
去Bazel的github https://github.com/bazelbuild/bazel/releases上下载安装包,我一开始下载的最新版,但是运行时提示我需要3.7.2的版,所以我安装的是bazel-3.7.2-installer-linux-x86_64.sh
安装后,根据提示设置环境变量,vim .bashrc,最后一行添加:
source /usr/local/lib/bazel/bin/bazel-complete.bash
6,Checkout MediaPipe repository.
git clone https://github.com/google/mediapipe.git 然后,进入mediapipe目录,
执行 setup_opencv.sh 安装opencv,
执行 setup_android_sdk_and_ndk.sh,安装andorid sdk, ndk,并做好环境变量的配置,
vim .bashrc 最后添加:
export ANDROID_HOME= P A T H : / r o o t / A n d r o i d / S d k e x p o r t A N D R O I D N D K H O M E = PATH:/root/Android/Sdk export ANDROID_NDK_HOME= PATH:/root/Android/SdkexportANDROIDNDKHOME=PATH:/root/Android/Sdk/ndk-bundle/android-ndk-r19c
这里依据你的andorid sdk安装目录做调整,我是用sudo 安装的,默认安装到了root账号下,

以上环境配置好,可以尝试编译,android aar包,
首先,mediapipe\mediapipe\examples\android\src\java\com\google\mediapipe\apps目录下,创建build_aar文件夹,里面新建文件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"],
)


#load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar")
#
#mediapipe_aar(
#    name = "mediapipe_instant_motion_tracking",
#    calculators = ["//mediapipe/graphs/instant_motion_tracking:instant_motion_tracking_deps"],
#)

这里是编手势检测的aar包,使用的模型是mediapipe\mediapipe\graphs\hand_tracking,
如果要编译别的,参考mediapipe\mediapipe\graphs\下的模型,修改BUILD文件,
然后,执行命令:

bazel build -c opt --strip=ALWAYS --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --fat_apk_cpu=arm64-v8a,armeabi-v7a --action_env PYTHON_BIN_PATH="usr/bin/python3" mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar:mediapipe_hand_tracking.aar

需要提示的是,这里要指定python的路径, --action_env PYTHON_BIN_PATH=“usr/bin/python3” 不然编译会报Repository command failed。
编译成功,你将看到如下输出信息:
在这里插入图片描述

OK,祝你好运。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值