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

  1. 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"],
)

  1. 运行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

 

 

先放一张最终项目结构图,可按照这个结构复制所需文件

  1. 新建FaceDetection项目
  2. 将以下文件复制到项目中

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

  1. 下载OpenCV-android-sdk,复制opencv jni库的项目中

1

cp -R ~/Downloads/OpenCV-android-sdk/sdk/native/libs/arm* /path/to/your/app/src/main/jniLibs/

  1. 再把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: 构建完成

 

 

接着就可以插上你的手机运行下试试吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android新建工程横屏,华为MatePad Pro构建的安卓平板横屏生态有何不同?来看看

在过去很多年中&#xff0c;Android 平板或者说 Android大屏设备一直受限于 Android生态的限制&#xff0c;无法发挥出本应具备的大屏使用体验&#xff0c;也正是因为这个原因&#xff0c;Android平板电脑一直被当做娱乐设备。在去年11月25日&#xff0c;华为正式发布了主打生产…

Flutter笔记:Web支持原理与实践

Flutter笔记 Web支持原理与实践 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com CSDN&#xff1a;https://blog.csdn.net/qq_28550263/article/details/135037756 华为开发者社区…

设置MAC 下 Vim 语法高亮显示

一&#xff1a;终端进入 cd /usr/share/vim/ 二&#xff1a; sudo vim vimrc 三&#xff1a;添加 syntax enablesyntax on 四&#xff1a;保存退出 转载于:https://www.cnblogs.com/cocoajin/p/3284604.html

外部服务发现之 ingress(一) traefik 的安装使用

Ingress其实就是从 kuberenets 集群外部访问集群的一个入口&#xff0c;将外部的请求转发到集群内不同的 Service 上&#xff0c;其实就相当于 nginx、haproxy 等负载均衡代理服务器&#xff0c;有的同学可能觉得我们直接使用 nginx 就实现了&#xff0c;但是只使用 nginx 这种…

ASP.NET MVC 3发布报错(ASP.NET MVC 3在没有安装环境的服务器上运行)的解决方案

前言 ASP.NET MVC 3在没有安装MVC3的环境的服务器上运行&#xff0c;就会报错&#xff0c;缺少引用&#xff0c;本文就为mvc3发布报错的解决方案。 解决方案 思路&#xff1a;提供ASP.NET MVC 3运行所需的的dll即可解决报错问题。 1、项目添加ASP.NET MVC 3的引用&#xff…

android 切换字体崩溃,androidx - 在Android 10 / Android Q上使用捆绑的ttf字体时崩溃 - 堆栈内存溢出...

将我的Android应用的目标级别从28更新为29(Android 10)后&#xff0c;该应用在Pixel 3(使用Android 10)上崩溃了。使用的版本Android Gradle插件3.5.0摇篮5.5.1问题&#xff1a;这是一个已知问题吗&#xff1f;细节崩溃发生在使用不同标签(TextView&#xff0c;androidx.appcom…

vsftp socket 报错

FTP显示数据 Socket 错误: 连接超时解决数据Socket错误及连接后为什么列表错误的解决方法 [右] 正打开数据连接 IP: 192.168.1 端口: 2226[右] 数据 Socket 错误: 连接被拒[右] 列表错误[右] PASV[右] 227 Entering Passive Mode (192,168,1,1,8,183)[右] 正打开数据连接 IP: 1…

Android Button 单击事件

方法一&#xff1a;在XML文件中指定 单击事件函数 <Button android:id"id/button1" android:layout_width"120dip" android:layout_height"wrap_content" android:layout_alignParentLeft"…

Python破解滑块验证码算法,完美避开人机识别

| 完美是不可能的&#xff0c;加个震惊&#xff01;Python破解BiliBili滑块验证码&#xff0c;完美避开人机识别&#xff0c;可以有 准备工作 B站登录页 https://passport.bilibili.com/loginpython3pip install selenium &#xff08;webdriver框架&#xff09;pip install P…

php 分页类

2019独角兽企业重金招聘Python工程师标准>>> 分页公式&#xff1a;页数&#xff08;总记录数-1&#xff09;/每页显示记录数1&#xff1b; 借助这个公式&#xff0c;实现以下分页类&#xff1b; <?php class Fpage{ private $total; //数据表中总记录数 …

Docker中的Nginx搭建HTTPS环境

准备 1.已安装好docker环境 2.申请好域名 3.SSL证书&#xff08;可选&#xff09; 一、安装Nginx docker pull nginx 查看docker镜像&#xff1a; docker images 二、进行配置 建目录用于存放nginx配置文件、证书文件 mkdir /opt/docker/nginx/conf.d -p touch /opt/docke…

Android的引用jar包

先来个基础的&#xff0c;在eclips里在工程名上右键->build path->contigure bud path->java build path里有个几个选项add external jars 增加工程外部的包add jars 增加工程内包add library 增加一个库add class folder 增加一个类文件夹下面着重介绍add libra…

Android木马分析实验,Android木马简介与分析

本文介绍基于Android的手机恶意软件&#xff0c;是一个基础性的介绍&#xff0c;给新入门的人提供一个分析和工具指引。要分析的木马是一个2013年的syssecApp.apk&#xff0c;这个木马的分析能对Android恶意软件有个大概了解。基础&#xff1a;1 –Android应用基础Android是goo…

Visual Studio 2012资源管理器里单击打开改为双击打开文件

Visual Studio 2012资源管理器里&#xff0c;单击打开文件改为双击打开文件&#xff0c;如图&#xff1a;

监控服务器容量 MOM

http://xxglx.jxcfs.com/net/zyk/htmlfiles/practice/practice00097.htm转载于:https://www.cnblogs.com/Kazaf/p/3286409.html

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法

在启用了Credential Guard或Device Guard的Windows 10主机上启动12.5版之前的VMware Workstation中的虚拟机时&#xff0c;将显示蓝色诊断屏幕&#xff08;BSOD&#xff09;。 会看到类似于以下内容的错误&#xff1a; VMware Workstation和Device / Credential Guard不兼容。禁…

android怎么升级版本5.0,一加手机怎么升级安卓5.0系统

谷歌今天正式发布了最新的安卓5.0正式版&#xff0c;作为一次非常大的系统升级&#xff0c;安卓5.0带来了非常多明显的升级&#xff0c;体验上相比安卓4.4要精进不少。在众多手机纷纷向Android 5.0发起冲击之时&#xff0c;一加手机官方论坛也放出了首个Android 5.0固件&#x…

Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css

网上压缩css和js工具很多&#xff0c;但在我们的系统中总有特殊的地方。也许你会觉得用第三方的压缩工具很麻烦。我就遇到了这样问题&#xff0c;我不想在本地压缩,只想更新到服务器上去压缩&#xff0c;服务器压缩也不用备份之类的操作。于是我就想着自己实现压缩工具。 初步…

Android 自动化测试——Monkey测试

2019独角兽企业重金招聘Python工程师标准>>> 1、Monkey测试简介 Monkey主要应用在压力和可靠性测试上&#xff0c;运行该命令可以随机地向目标程序发送各种模拟键盘事件流&#xff0c;并且可以自己定义发送的次数&#xff0c;以此观察被测应用程序的稳定性和可靠性…

android默认开机动画,修改安卓开机动画(除了部分系统 如MIUI等)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这技术已经很久了&#xff0c;但还是忍不住搬运了一下。出处是百度的&#xff0c;很久很久以前玩手机在百度上学的我这里说的开机动画是指开机的第二屏开机动画可以在下载的rom里修改&#xff0c;也可以刷机后修改(推荐后者&#x…