Ubuntu下配置Android MediaPipe

Ubuntu下配置Android MediaPipe

  • Ubuntu下配置Android MediaPipe
    • 环境说明
    • 显卡驱动
    • 安装魔法
    • 安装git
    • 安装python环境
    • MediaPipe安装
    • Android配置
    • Android Studio,启动!

Ubuntu下配置Android MediaPipe

环境说明

安装在Ubuntu20.04双系统上,CPU型号为12400,显卡型号为4060ti 16g,目前很多相关教程有些老旧,实际安装过程中会出现很多报错,版主在配置过程中也是吃尽了苦头,现在总算是安装好了,与大家分享一下经验

显卡驱动

通常在安装完系统后,我们需要在终端里运行以下这两个命令进行更新

sudo apt update
sudo apt upgrade

部分用户在安装ubuntu20.02后可能会出现掉驱动的情况,通常来讲只需在软件和更新-附加驱动里选择需要的驱动版本,我这里选择是535驱动,大家按各自需求安装即可

如果上述方法安装不成功,可参考这篇文章
https://blog.csdn.net/Perfect886/article/details/119109380?spm=1001.2014.3001.5506

安装魔法

八仙过海,各显神通

安装git

sudo apt install git

通常需要为git设置代理,版主这里走的是2341端口,所以设置如下,大家按自己实际情况修改

git config --global http.proxy socks5://127.0.0.1:2341
git config --global https.proxy socks5://127.0.0.1:2341

安装python环境

只想简单安个python的,在终端中运行

sudo apt install python
sudo apt install python3-pip
pip install numpy

想管理环境的选择conda,从官网下载linux版本的anaconda安装包,楼主下的是Anaconda3-2023.07-2-Linux-x86_64.sh,在终端里打开

sh Anaconda3-2023.07-2-Linux-x86_64.sh

一路enter下去,最后在你选择的环境中装个numpy即可

MediaPipe安装

楼主安装时的版本是MediaPipe v0.10.8
终端打开

git clone https://github.com/google/mediapipe.git
cd mediapipe

安装bazel,这个版本MediaPipe对应的bazel版本是6.1.1,不知道版本也没关系,装错了error有提示

sudo apt install curl gnupg
curl -f https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt update && sudo apt install bazel-6.1.1 

安装OpenCV和FFmpeg

sudo apt-get install libopencv-core-dev libopencv-highgui-dev \
                       libopencv-calib3d-dev libopencv-features2d-dev \
                       libopencv-imgproc-dev libopencv-video-dev

安装GPU库

sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev

下来测试一下是否安装成功,如果成功会输出Hello World!

export GLOG_logtostderr=1
# 不启用GPU
bazel run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world
# 启用GPU
bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 mediapipe/examples/desktop/hello_world:hello_world

到这一步,MediaPipe告一段落,下来是安卓编译环境配置

Android配置

安装jdk

# 查看适用的jdk版本
apt-cache search openjdk
# 版主选择了常见的openjdk8
sudo apt-get install openjdk-8-jdk

添加系统变量

gedit ~/.bashrc

在最后加上

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

测试,无问题会输出版本信息

java -version

返回到MediaPipe根目录安装SDK和NDK

打开终端,请注意NDK版本按照setup_android_sdk_and_ndk.sh中注释推荐的来,否则大概率报错

chmod +x ./setup_android_sdk_and_ndk.sh
bash ./setup_android_sdk_and_ndk.sh ~/Android/Sdk ~/Android/Ndk r21

添加环境变量

gedit ~/.bashrc

在最后加上,注意这里用户名填自己的

export ANDROID_HOME=$PATH:/home/用户名/Android/Sdk
export ANDROID_NDK_HOME=$PATH:/home/用户名/Android/Ndk/android-ndk-r21

下来编译aar文件

cd mediapipe/examples/android/src/java/com/google/mediapipe/apps/
mkdir buid_aar && cd buid_aar
touch BUILD
gedit 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"],
)

回到MediaPipe根目录,终端打开

chmod -R 755 mediapipe/

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

等上几分钟,大概5,6000项编译完,你就能得到这个aar文件。不过版主后来也没用到这个aar文件,之后直接用官方自带的examples编译输出apk了

Android Studio,启动!

打开官网https://developer.android.com/studio,下载需要的版本,我这里下的是android-studio-2022.3.1.21-linux.tar.gz,下载完后打开终端

tar -zxvf android-studio-2022.3.1.21-linux.tar.gz
sudo mv android-studio /opt/ 
cd /opt/android-studio/bin 
sh ./studio.sh

进入studio会要求你设置代理,你可以在自动代理那里设置镜像源,我在这里开始是手动走的的socks端口2341,但是连不上,改成http走2340就好了。这个代理是必须设置的,因为之后要下google的依赖

把mediapipe/mediapipe/examples/android/solutions作为project打开,我只需要hands所以把另外两个例子删除了,自动配置环境,这里可能会出现报错
最后在solutions底下的gradle/wrapper/gradle-wrapper.properties找到

distributionUrl=https\://services.gradle.org/distributions/gradle-8.4.0-bin.zip

这一行,将8.4.0改成一个较低的版本号,我这里改成了

distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip

就不再报错直接生成项目了

随后进行apk的编译,参考这篇文章
https://blog.csdn.net/ss_0507/article/details/121713523?spm=1001.2014.3001.5506
按这个走完可能还是会报错,不要着急
在hands中的build.gradle里的android{}中添加

lintOptions{
        checkReleaseBuilds false
        abortOnError false
    }

添加完后就可以正常编译输出了apk了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值