当前位置: 首页 > news >正文

Mediapipe 在Android studio 运行官方的 FaceDetection

参考大佬的文章:https://blog.csdn.net/luozhichengaichenlei/article/details/117289326

1. Create a mediapipe_aar() target.

在路径mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_face/下新建BUILD文件,并复制下面内容
创建文件方法:https://blog.csdn.net/EchoChou428/article/details/105312998

load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar")

mediapipe_aar(
    name = "mediapipe_face_detection",
    calculators = ["//mediapipe/graphs/face_detection:mobile_calculators"],
)

name可以随便起,但是要与下面生成的安卓aar文件要一致

2.生成安卓aar文件

bazel build -c opt --strip=ALWAYS \
    --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
    --fat_apk_cpu=arm64-v8a,armeabi-v7a \
    --legacy_whole_archive=0 \
    --features=-legacy_whole_archive \
    --copt=-fvisibility=hidden \
    --copt=-ffunction-sections \
    --copt=-fdata-sections \
    --copt=-fstack-protector \
    --copt=-Oz \
    --copt=-fomit-frame-pointer \
    --copt=-DABSL_MIN_LOG_LEVEL=2 \
    --linkopt=-Wl,--gc-sections,--strip-all \
    //mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example:mediapipe_face_detection.aar

在最后一行我们修改成自己创建BUILD文件的目录,并生成BUILD文件里面同名的aar文件
我这里是

//mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_face:mediapipe_face_detection.aar

bazel build -c opt --strip=ALWAYS \
    --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
    --fat_apk_cpu=arm64-v8a,armeabi-v7a \
    --legacy_whole_archive=0 \
    --features=-legacy_whole_archive \
    --copt=-fvisibility=hidden \
    --copt=-ffunction-sections \
    --copt=-fdata-sections \
    --copt=-fstack-protector \
    --copt=-Oz \
    --copt=-fomit-frame-pointer \
    --copt=-DABSL_MIN_LOG_LEVEL=2 \
    --linkopt=-Wl,--gc-sections,--strip-all \
    //mediapipe/examples/android/src/java/com/google/mediapipe/apps/build_aar_face:mediapipe_face_detection.aar

运行效果:在这里插入图片描述

3.在Android studio使用编译好的mediapipe AAR文件

复制AAR文件到app/libs目录下

关于没有libs目录解决方法:https://blog.csdn.net/qq_51533157/article/details/126634833?spm=1001.2014.3001.5501

根据bazel编译的文件找到aar文件:在这里插入图片描述
如果没有的话,可能是被隐藏起来了
在这里插入图片描述

4. Build the MediaPipe binary graph并且复制到app/src/main/assets目录下

bazel build -c opt mediapipe/graphs/face_detection:face_detection_mobile_gpu_binary_graph

在这里插入图片描述
编译完成,具体需要复制什么,见mediapipe/examples/android/src/java/com/google/mediapipe/apps/facedetectiongpu/BUILD中的assets
在这里插入图片描述
这里需要注意的是,这个文件是编译过后的文件,因此是在bazel-bin里
在这里插入图片描述
全部的目录为:

/home/sza/mediapipe/bazel-bin/mediapipe/graphs/face_detection

而不是

/home/sza/mediapipe/mediapipe/graphs/face_detection

而第二个文件不是在bazel-bin下
在这里插入图片描述
我的地址为:

/home/sza/mediapipe/mediapipe/modules/face_detection

其实官网上写了,但是我第一次没有注意
在这里插入图片描述
将这两个文件复制到app/src/main/assets下,我是直接拖拽的。

5.修改app/build.gradle添加MediaPipe dependencies and MediaPipe AAR

注意这里的build.gradle 的位置
在这里插入图片描述
在这里插入图片描述
复制进去

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:latest.release'
    implementation 'com.google.flogger:flogger-system-backend:latest.release'
    implementation 'com.google.code.findbugs:jsr305:latest.release'
    implementation 'com.google.guava:guava:27.0.1-android'
    implementation 'com.google.protobuf:protobuf-javalite:3.19.1'
    // CameraX core library
    def camerax_version = "1.0.0-beta10"
    implementation "androidx.camera:camera-core:$camerax_version"
    implementation "androidx.camera:camera-camera2:$camerax_version"
    implementation "androidx.camera:camera-lifecycle:$camerax_version"
    // AutoValue
    def auto_value_version = "1.8.1"
    implementation "com.google.auto.value:auto-value-annotations:$auto_value_version"
    annotationProcessor "com.google.auto.value:auto-value:$auto_value_version"

6.使用官方案例在这里插入图片描述

相关文章:

  • Java项目源码下载S2SH基于java的保险业务管理系统
  • CS5086E 双节锂电升压充电管理IC特点及应用
  • linux 输出重定向
  • win10任务栏卡死桌面正常的解决方法
  • NVIDIA:应将USD作为3D互联网的HTML标准语言
  • H5画布绘制笑脸
  • 【定制项目】【M14 监测预警平台】百度地图区域绘制(时间轴)/柱状图/仪表图 - 关键技术 python flask + echarts
  • RS笔记:深度推荐模型之SIM(基于搜索的超长行为序列上的用户长期兴趣建模)[CIKM 2020, 阿里妈妈广告团队]
  • 关于第一次接入Kotlin
  • C++中菱形类关系再理解
  • stack和queue的使用和模拟实现
  • 【C++】 string类常用接口的实现
  • 华为防火墙基础自学系列 | 汇总
  • TNet 中 JoinChannel 场景名可写可不写
  • 使用容器编译Yocto镜像
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [译]CSS 居中(Center)方法大合集
  • Android组件 - 收藏集 - 掘金
  • Angular Elements 及其运作原理
  • ECS应用管理最佳实践
  • Go 语言编译器的 //go: 详解
  • java8-模拟hadoop
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript设计模式系列一:工厂模式
  • node学习系列之简单文件上传
  • SpringBoot 实战 (三) | 配置文件详解
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 每天10道Java面试题,跟我走,offer有!
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何合理的规划jvm性能调优
  • 如何进阶一名有竞争力的程序员?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 一道面试题引发的“血案”
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #include到底该写在哪
  • #NOIP 2014# day.1 T2 联合权值
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (day 12)JavaScript学习笔记(数组3)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (安卓)跳转应用市场APP详情页的方式
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (接口封装)
  • (排序详解之 堆排序)
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • .net core 6 redis操作类
  • .NET 反射 Reflect
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET开发人员必知的八个网站
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @在php中起什么作用?
  • [ Algorithm ] N次方算法 N Square 动态规划解决