日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Meidapipe 3D手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉

發布時間:2025/3/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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手势姿态跟踪算法,手机端实时检测 ,多个手势同时捕捉的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。