生活随笔
收集整理的這篇文章主要介紹了
Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Ubuntu安裝MediaPipe 1. github下載Meidapipe代碼 2. [安裝Bazel](https://docs.bazel.build/versions/master/install-ubuntu.html) 3. Install OpenCV and FFmpeg 4. 安裝在Linux desktop運行需要的工具 5. 運行Hello World desktop example 安裝Android SDK和NDK 1. 安裝[Android Studio](https://developer.android.google.cn/studio/),在Android studio下安裝NDK 2. 配置SDK,NDK環境變量 在已有的Android項目中使用MediaPipe Step1. 構建MediaPipe AAR Step2:運行bazel構建binarypd文件 Step3:在Android Studio中使用Mediapipe Step4: 構建完成
Ubuntu安裝MediaPipe
1. github下載Meidapipe代碼
1 2 3 4
$ git clone https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
2. 安裝Bazel
提供了三種options,選擇第一種,安裝時可能會網速太慢導致安裝失敗 Step1: 添加源(一次性操作)
1 2 3
sudo apt install curl curl 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
Step2:安裝更新Bazel
1 2
sudo apt update && sudo apt install bazel sudo apt update && sudo apt full-upgrade
?
?
Step3:安裝JDK(在Android上運行需要,否則可不安裝)
1 2 3 4 5
# Ubuntu 16.04 (LTS) uses OpenJDK 8 by default: sudo apt install openjdk-8-jdk # Ubuntu 18.04 (LTS) uses OpenJDK 11 by default: sudo apt install openjdk-11-jdk
3. Install OpenCV and FFmpeg
1 2 3
$ sudo apt-get install libopencv-core-dev libopencv-highgui-dev \ ? ? ? ? ? ? ? ? ? ? ? ?libopencv-calib3d-dev libopencv-features2d-dev \ ? ? ? ? ? ? ? ? ? ? ? ?libopencv-imgproc-dev libopencv-video-dev
4. 安裝在Linux desktop運行需要的工具
1
sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev
5. 運行Hello World desktop example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$ export GLOG_logtostderr=1 # if you are running on Linux desktop with CPU only $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ ? ? mediapipe/examples/desktop/hello_world:hello_world # If you are running on Linux desktop with GPU support enabled (via mesa drivers) $ bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \ ? ? mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
?
?
安裝Android SDK和NDK
1. 安裝Android Studio,在Android studio下安裝NDK
?
2. 配置SDK,NDK環境變量
1 2 3
# 這個也是一次行操作,關閉終端后需重新配置 export ANDROID_HOME=<path to the Android SDK> export ANDROID_NDK_HOME=<path to the Android NDK>
例如我的環境變量是
1 2 3 4 5 6 7
export ANDROID_HOME=/home/zhw/Android/Sdk export ANDROID_NDK_HOME=/home/zhw/Android/Sdk/ndk/21.1.6352462 #如果想設置全局環境變量 $ sudo vim /etc/profile #把上面兩行export復制到profile最下面,再執行以下操作生效 $ source /etc/profile
在已有的Android項目中使用MediaPipe
Step1. 構建MediaPipe AAR
Create a mediapipe_aar() target. 新建aar_exmaple和BUILD 在mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/BUILD添加
1 2 3 4 5 6
load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar") mediapipe_aar( ? ? name = "mp_face_detection_aar", ? ? calculators = ["//mediapipe/graphs/face_detection:mobile_calculators"], )
運行bazel構建AAR
1 2 3 4 5 6
bazel build -c opt --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --fat_apk_cpu=arm64-v8a,armeabi-v7a \ ? ? //mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example:mp_face_detection_aar # It should print: # Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example:mp_face_detection_aar up-to-date: # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mp_face_detection_aar.aar
Step2:運行bazel構建binarypd文件
1
bazel build -c opt mediapipe/examples/android/src/java/com/google/mediapipe/apps/facedetectiongpu:binary_graph
Step3:在Android Studio中使用Mediapipe
?
?
先放一張最終項目結構圖,可按照這個結構復制所需文件
新建FaceDetection項目 將以下文件復制到項目中
1 2 3 4
cp bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mp_face_detection_aar.aar /path/to/your/app/libs/ cp bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/facedetectiongpu/facedetectiongpu.binarypb /path/to/your/app/src/main/assets/ cp mediapipe/models/face_detection_front.tflite /path/to/your/app/src/main/assets/ cp mediapipe/models/face_detection_front_labelmap.txt /path/to/your/app/src/main/assets/
mp_face_detection_aar.aar --------> app/lib/mp_face_detection_aar.aar facedetectiongpu.binarypb -------->app/src/main/assets/facedetectiongpu.binarypb face_detection_front.tflite -------->app/src/main/assets/face_detection_front.tflite face_detection_front_labelmap.txt -------->app/src/main/assets/face_detection_front_labelmap.txt
下載OpenCV-android-sdk,復制opencv jni庫的項目中
1
cp -R ~/Downloads/OpenCV-android-sdk/sdk/native/libs/arm* /path/to/your/app/src/main/jniLibs/
再把mediapipe/examples/android/src/java/com/google/mediapipe/apps/facedetectioncpu下的res,AndroidManifest.xml,MainActivity.java放到項目中,修改AndroidManifest.xml的package="com.google.mediapipe.apps.facedetectioncpu">為你自己的包,其他報錯按提示修改 在app的build.gradle中添加依賴庫,這里我安裝的時候參考了csdn上的一篇博客,我直接用的他的dependencies,結果有一個依賴錯了,導致我的項目運行失敗,花了兩天時間才解決,所以請嚴格安裝官網安裝,此博客只作為一個參考。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
dependencies { ? ? implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) ? ? implementation 'androidx.appcompat:appcompat:1.0.2' ? ? implementation 'androidx.constraintlayout:constraintlayout:1.1.3' ? ? testImplementation 'junit:junit:4.12' ? ? androidTestImplementation 'androidx.test.ext:junit:1.1.0' ? ? androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' ? ? // MediaPipe deps ? ? implementation 'com.google.flogger:flogger:0.3.1' ? ? implementation 'com.google.flogger:flogger-system-backend:0.3.1' ? ? implementation 'com.google.code.findbugs:jsr305:3.0.2' ? ? implementation 'com.google.guava:guava:27.0.1-android' ? ? implementation 'com.google.guava:guava:27.0.1-android' ? ? implementation 'com.google.protobuf:protobuf-java:3.11.4'' ? ? // CameraX core library ? ? def camerax_version = "1.0.0-alpha06" ? ? implementation "androidx.camera:camera-core:$camerax_version" ? ? implementation "androidx.camera:camera-camera2:$camerax_version" }
?
Step4: 構建完成
?
?
接著就可以插上你的手機運行下試試吧
總結
以上是生活随笔 為你收集整理的Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。