uniapp原生插件之安卓虹软人脸识别原生插件

news2024/11/16 6:41:20

插件介绍

虹软人脸识别支持图片人脸识别(可识别网络图片),活体检测,离线识别,相机预览旋转,相机人脸识别,批量注册(支持网络图片)等,支持保存用户的id和名称

插件地址

安卓虹软人脸识别SDK免费版原生插件 - DCloud 插件市场

超级福利

uniapp 插件购买超级福利

详细使用文档

uniapp 安卓虹软人脸识别原生插件使用文档

申请权限

  1. android.permission.READ_EXTERNAL_STORAGE
  2. android.permission.READ_PHONE_STATE
  3. android.permission.WRITE_EXTERNAL_STORAGE
  4. android.permission.CAMERA

API使用

用法

在需要使用插件的页面加载以下代码 

const module = uni.requireNativePlugin("leven-arcFace-ArcFaceModule");

页面内容

    <template>
  <view>
    <uni-card title="虹软人脸识别原生插件">
      <button type="primary" @click="onlineActive">激活引擎</button>
      <button type="primary" @click="getImageFace">获取图片人脸信息</button>
      <button type="primary" @click="imageFaceRegister">图片注册人脸</button>
      <button type="primary" @click="clearFace">清空人脸库</button>
      <button type="primary" @click="deleteFace">删除人脸</button>
      <button type="primary" @click="getFace">获取人脸</button>
      <button type="primary" @click="getAllFace">获取所有人脸信息</button>
      <button type="primary" @click="batchRegister">批量注册</button>
      <button type="primary" @click="getFaceCount">获取注册的人脸数量</button>
    </uni-card>
  </view>
</template>

<script>
  const module = uni.requireNativePlugin("leven-arcFace-ArcFaceModule");
  export default {
    data() {
      return {

      }
    },
    methods: {
      // 激活引擎
      onlineActive() {
        module.activeEngine({
          appId: "7eHk2fnhwZ4aNHeXBrPceHS8K442TY7d27o1bvfGniod",
          sdkKey: "ax9B3CzadBJJ2W8LAHFDWk6JMMQ5bdBtfAwSN5joA4w"
        }, res => {
          console.log(res)
        })
      },
      // 获取图片人脸信息
      getImageFace() {
        module.getImageFace({
          //本地或网络url地址
          url: "/sdcard/DCIM/arcface/1.jpg",
        }, res => {
          console.log(res)
        })
      },
      // 图片注册人脸信息
      imageFaceRegister() {
        module.imageFaceRegister({
          //本地或网络url地址
          url: "/sdcard/DCIM/arcface/2.jpg",
          // 保存的id(可以不传该参数,默认时间戳)
          id: 123,
          //保存的姓名(可以不传该参数,默认时间戳)
          name: "leven",
          // 同一人是否可以多次注册,默认true
          registerMultiple: false
        }, res => {
          console.log(res)
        })
      },
      // 清空人脸库
      clearFace() {
        module.clearFace(res => {
          console.log(res)
        })
      },
      // 删除人脸
      deleteFace() {
        module.deleteFace({
          id: "123"
        }, res => {
          console.log(res)
        })
      },
      // 获取人脸
      getFace() {
        module.getFace({
          id: "123"
        }, res => {
          console.log(res)
        })
      },
      // 批量注册
      batchRegister() {
        module.batchRegister({
          // 同一人是否可以多次注册,默认true
          registerMultiple: false,
          list: [{
            //本地或网络url地址
            url: "/sdcard/DCIM/arcface/1.jpg",
            // 保存的id(可以不传该参数,默认时间戳)
            id: 10001,
            //保存的姓名(可以不传该参数,默认时间戳)
            name: "leven1"
          }, {
            //本地或网络url地址
            url: "http://www.yeyuboke.com/svga/2.jpg",
            // 保存的id(可以不传该参数,默认时间戳)
            id: 10002,
            //保存的姓名(可以不传该参数,默认时间戳)
            name: "leven2"
          }, {
            //本地或网络url地址
            url: "/sdcard/DCIM/arcface/3.jpg",
            // 保存的id(可以不传该参数,默认时间戳)
            id: 10003,
            //保存的姓名(可以不传该参数,默认时间戳)
            name: "leven3"
          }, {
            //本地或网络url地址
            url: "http://www.yeyuboke.com/svga/4.jpg",
            // 保存的id(可以不传该参数,默认时间戳)
            id: 10004,
            //保存的姓名(可以不传该参数,默认时间戳)
            name: "leven4"
          }, {
            //本地或网络url地址
            url: "/sdcard/DCIM/arcface/5.jpg",
            // 保存的id(可以不传该参数,默认时间戳)
            id: 10005,
            //保存的姓名(可以不传该参数,默认时间戳)
            name: "leven5"
          }, {
            //本地或网络url地址
            url: "/sdcard/DCIM/arcface/6.jpg",
            // 保存的id(可以不传该参数,默认时间戳)
            id: 10006,
            //保存的姓名(可以不传该参数,默认时间戳)
            name: "leven6"
          }]
        }, res => {
          console.log(res)
        })
      },
      // 获取所有人脸信息
      getAllFace() {
        module.getAllFace(res => {
          console.log(res)
        })
      },
      // 获取注册的人脸数量
      getFaceCount() {
        module.getFaceCount(res => {
          console.log(res)
        })
      }
    }
  }
</script>

<style>

</style>

人脸识别组件使用

用法

在需要使用插件的页面添加以下代码

<leven-arcFace ref="refLevenArcFace" style="flex:1; height: 500px;" :camera="camera" :video="video" @onError="onError"
    @onCameraOpened="onCameraOpened" @onCameraClosed="onCameraClosed" @onFaceResult="onFaceResult"></leven-arcFace>

页面内容

    <template>
  <view>
    <uni-card title="人脸识别">
      <view style="flex:1; height: 500px; position: relative;">
        <leven-arcFace ref="refLevenArcFace" style="flex:1; height: 500px;" :camera="camera" :video="video" @onError="onError"
          @onCameraOpened="onCameraOpened" @onCameraClosed="onCameraClosed" @onFaceResult="onFaceResult">
        </leven-arcFace>
        <!-- 组件内部自定义内容 -->
        <cover-view style="position: absolute; left: 0; top: 0;">
          <view><text>这里是自定义文字内容</text></view>
        </cover-view>
      </view>
      <button type="primary" @click="register">注册人脸</button>
      <button type="primary" @click="switchCamera">切换相机</button>
      <button type="primary" @click="stop">关闭预览</button>
      <button type="primary" @click="start">开启预览</button>
      <button type="primary" @click="closeFace">关闭人脸检测</button>
      <button type="primary" @click="openFace">开启人脸检测</button>
    </uni-card>
  </view>
</template>

<script>
  export default {
    data() {
      return {
        // 摄像机配置,所有的参数都可以不传,不传则按默认的
        camera: {
          // 相机预览旋转角度
          rotation: 0,
          //相机预览模式,0:后置,1:前置(默认)
          facing: 1,
          //预览分辨率
          // size: [800, 600],
          // 摄像机预览圆角
          radius: 50,
          // 是否开启预览,默认:true
          preview: true
        },
        // 视频检测配置,所有参数都可以不传,不传则按默认的
        video: {
          // 视频检测角度,可接收参数,0,90,180,270(默认),360(全方位检测)
          orient: 360,
          // 是否进行活体检测(默认为true)
          liveness: true,
          // 人脸注册同一人是否可以多次注册(默认:true)
          registerMultiple: false,
          // 人脸识别成功后是否展示左上角人脸识别图片(默认:true)
          showIdentifyImage: false,
          // 人脸框是否处于X反向状态,如果未设置该参数人脸框和人脸处于反向请将该参数设置为true
          // isContraryX: true,
          // 人脸框是否处于Y反向状态,如果未设置该参数人脸框和人脸处于反向请将该参数设置为true
          // isContraryY: true,
          // 识别阈值
          similar: 0.8,
          // 识别的最小人脸比例,如果失败比较敏感可以适当调小,默认:16
          detectFaceScaleVal: 10
        }
      }
    },
    methods: {
      // 注册人脸
      register() {
        if (this.$refs.refLevenArcFace) {
          this.$refs.refLevenArcFace.register({
            // 注册后保存的id(可以不传该参数,默认时间戳)
            id: "456",
            //注册后保存的名字(可以不传该参数,默认时间戳)
            name: "leven1"
          }, res => {
            console.log(res)
          });
        }
      },
      // 切换相机
      switchCamera() {
        if (this.$refs.refLevenArcFace) {
          this.$refs.refLevenArcFace.switchCamera(res => {
            console.log(res)
          });
        }
      },
      // 关闭预览
      stop() {
        if (this.$refs.refLevenArcFace) {
          this.$refs.refLevenArcFace.stop(res => {
            console.log(res)
          });
        }
      },
      // 开启预览
      start() {
        if (this.$refs.refLevenArcFace) {
          this.$refs.refLevenArcFace.start(res => {
            console.log(res)
          });
        }
      },
      // 关闭人脸检测
      closeFace() {
        if (this.$refs.refLevenArcFace) {
          this.$refs.refLevenArcFace.closeFace(res => {
            console.log(res)
          });
        }
      },
      // 开启人脸检测
      openFace() {
        if (this.$refs.refLevenArcFace) {
          this.$refs.refLevenArcFace.openFace(res => {
            console.log(res)
          });
        }
      },
      // 错误事件
      onError(e) {
        console.log(e)
      },
      // 相机打开事件
      onCameraOpened(e) {
        console.log(e)
      },
      // 相机关闭事件
      onCameraClosed(e) {
        console.log(e)
      },
      // 相机配置改变事件
      onCameraConfigurationChanged(e) {
        console.log(e)
      },
      // 人脸识别结果
      onFaceResult(e) {
        console.log(e)
      }
    }
  }
</script>

<style>

</style>

插件方法

API

  • 激活引擎
  • 获取图片人脸信息
  • 图片注册人脸
  • 清空人脸库
  • 删除人脸
  • 获取人脸
  • 获取所有人脸信息
  • 批量注册
  • 停止批量注册 v1.1.0
  • 获取注册的人脸数量

组件

  • 组件方法
    • 相机注册人脸
    • 切换相机
    • 关闭预览
    • 开启预览
    • 关闭人脸检测 v1.0.1
    • 开启人脸检测 v1.0.1
    • 设置摄像机属性 v1.1.0
    • 设置视频检测属性 v1.1.0
  • 组件属性
    • 摄像机配置
    • 视频检测配置
  • 组件事件
    • 错误事件
    • 相机打开事件
    • 相机关闭事件
    • 相机配置改变事件
    • 人脸识别结果

 具体方法的使用请参考说明文档

联系作者

购买插件前请先试用,试用通过再购买。在试用中如果遇到任何问题,可与作者联系,QQ:334106817,将全力协助你使用本插件

预览图片

 

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

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

相关文章

双通道 H 桥电机驱动芯片AT8833,软硬件兼容替代DRV8833,应用玩具、打印机等应用

上期小编给大家分享了单通道 H 桥电机驱动芯片&#xff0c;现在来讲一讲双通道的驱动芯片。 双通道 H 桥电机驱动芯片能通过控制电机的正反转、速度和停止等功能&#xff0c;实现对电机的精确控制。下面介绍双通道H桥电机驱动芯片的工作原理和特点。 一、工作原理 双通道 H 桥电…

RuoYi-Vue 在Swagger和Postman中 上传文件测试方案

RequestPart是Spring框架中用于处理multipart/form-data请求中单个部分的注解。在Spring MVC中&#xff0c;当处理文件上传或其他类型的多部分请求时&#xff0c;可以使用RequestPart注解将请求的特定部分绑定到方法参数上。 使用RequestPart注解时&#xff0c;需要指定要绑定…

动捕设备VDSuit Full便携式动作捕捉设备,帮你轻松打破次元壁

动捕设备可以将真人的动作转化为计算机可识别的数据&#xff0c;并将这些数据用于电影、游戏、体育科学等多个专业领域&#xff0c;将真人的动作真实呈现于虚拟世界中。 目前&#xff0c;市面上主要分为光学动捕设备和惯性动作捕捉两种技术&#xff0c;光学动捕设备具有识别精度…

黄金走势分析:美元反弹,金价已失守1980关口

昨晚美元和美债收益率反弹回升&#xff0c;现货黄金震荡下行&#xff0c;美市尾盘金价失守1980美元关口&#xff0c;最低至1977.22美元/盎司&#xff0c;最终收跌0.72%&#xff0c;报收1977.69美元/盎司。在汉声集团分析师张新才发稿前&#xff0c;今日&#xff08;周二&#x…

摄影师的必备神器:这三款炙手可热的人像修图工具了解一下!

不会吧&#xff0c;现在还有人不修图就直接上传照片吧&#xff1f;作为新时代的精致男孩女孩&#xff0c;修复工具是一定必不可少的&#xff0c;随着手机拍照的流行&#xff0c;许多后期的图片修复工具也是很强大的&#xff0c;有的甚至可以帮助我们一键搞定修图&#xff0c;无…

Web逆向-某网络学院学习的”偷懒“思路分析

接到求助&#xff0c;帮朋友完成20课时的网络学习。 我想都没想就接下了&#xff0c;寻思找个接口直接把学习时间提交上去&#xff0c;易如反掌。 最不济最不济&#xff0c;咱还能16x播放&#xff0c;也简单的很 然鹅&#xff0c;当我登陆的时候&#xff0c;发现自己还是太天真…

浅谈指针函数、函数指针、指针数组、数组指针 简单明了!!!!

指针函数 形如&#xff1a;int* fun(int a, int b) 类比于&#xff1a;int fun(int x, int y)、char fun(int x, int y) 本质上是函数&#xff0c;只是返回值为int类型的指针&#xff0c;以此类推可以有void*、char*、unsigned char*类型等指针&#xff0c;类比于返回值是int …

HCIA_数据链路层

如果数据进行封装时&#xff0c;基于E2或者802.3标准&#xff0c;此时我们称之为是一个以太网帧 1、EthernetII 采用EthernetII协议会在数据基础之上多出18Byte&#xff0c;EthernetII的数据长度是46-1500B FCS&#xff08;Frame check Sequence&#xff09;帧校验序列&#…

杂记 | 使用阿里云函数计算服务代理OpenAI的API接口

文章目录 01 准备工作1.1 需求1.2 准备工作 02 操作步骤2.1 Linux端2.2 阿里云控制台 03 参考链接 01 准备工作 1.1 需求 OpenAI的官方接口的URL是https://api.openai.com&#xff0c;然而国内无法直接访问&#xff0c;可以通过反向代理该链接的方式来实现&#xff0c;可如果…

关于卷积神经网络的填充(padding)

认识填充 &#xff08;padding&#xff09; 随着卷积层数的加深&#xff0c;输出进一步缩小&#xff0c;那么最终会导致输出很快就只剩下1∗1的数组&#xff0c;这也就没办法继续计算了&#xff0c;所以提出了填充的方法来方便网络的进一步加深。 其实填充的原因有两点&#xf…

Maven-构建工具

一、背景 开发者编写完成源码&#xff0c;还需要进行编译、测试、打包、部署等一系列操作。在一些小型项目中&#xff0c;还可能通过手动方式进行以上操作。但是在大型项目中&#xff0c;难以确定以上操作的顺序&#xff0c;而且会耗费更高的时间成本。 1.构建工具 构建工具…

AR眼镜硬件解决方案_AR/VR智能眼镜安卓主板芯片方案介绍

随着近两年来增强现实(AR)技术的逐渐成熟&#xff0c;采用MT8788芯片解决方案的AR眼镜已经问世。众所周知&#xff0c;AR技术可以帮助开发者打造一个既强大而又实用的混合现实世界&#xff0c;将虚拟与真实世界相结合。 据了解&#xff0c;MT8788芯片采用了多芯片分布式处理系统…

【GEE】7、利用GEE进行遥感影像分类【随机森林分类】

1简介 在本模块中&#xff0c;我们将讨论以下概念&#xff1a; 监督和非监督图像分类之间的区别。Google Earth Engine 提供的各种分类算法的定义和应用。如何使用 randomForest 设置和运行分类&#xff0c;以 aspen 存在和不存在作为示例数据集。 2背景 图像分类 人类自然倾向…

AlGaN/GaN HEMT 中缓冲区相关电流崩溃的缓冲区电位模拟表征

标题&#xff1a;Characterization of Buffer-Related Current Collapse by Buffer Potential Simulation in AlGaN/GaN HEMTs 来源&#xff1a;IEEE TRANSACTIONS ON ELECTRON DEVICES (18年) 摘要 - 在本文中&#xff0c;通过使用脉冲 I-V 测量和二维漂移扩散模拟研究了 Al…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven核心概念

一.Maven的POM POM全称&#xff1a;Project Object Model【项目对象模型】&#xff0c;将项目封装为对象模型&#xff0c;便于使用Maven管理【构建】项目 pom.xml常用标签 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://m…

怎么将pdf转换成word?

怎么将pdf转换成word&#xff1f;将pdf文件转换成word是一件非常重要的转换技能&#xff0c;将pdf转换成word可以解决非常多的问题&#xff0c;总结起来主要有以下这些&#xff1a;编辑文本&#xff1a;① PDF文件通常是不可编辑的&#xff0c;而将其转换为Word格式后&#xff…

一图get招商局客户经营管理模式转型新成果

招商局集团为积极落实国务院国资委对标世界一流企业管理提升行动要求&#xff0c;以“第三次创业”和全面建成数字化招商局为指引&#xff0c;响应二级板块业务端客户管理信息化建设急迫需求&#xff0c;构建统一的客户经营管理平台。 为此&#xff0c;招商局集团选择纷享销客…

轻量封装WebGPU渲染系统示例<20>- 美化一下元胞自动机之生命游戏(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifePretty.ts 系统特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据(内外部相关资源)和渲染机制分离…

11月1日 mybatis入门

java程序与数据库对接端: jdbc 步骤固定, 代码固定, 大量重复代码 SQL写在代码中, 修改sql,需要重新编译代码, 动态sql, 手动拼接 结果集与java对象转换, java程序与前端对接端: javaWeb 手动获取请求参数, 需要手动进行数据转换 一个请求对应一个Servlet,造成Servlet类暴增…

js 高效生成连续递增的小数数组

简介 JavaScript 按照指定间隔生成连续递增的数组。 1. 循环生成 function generateIncrementalArray(start, end, step) {const result [];for (let i start; i < end; i step) {result.push(parseFloat(i.toFixed(1))); // 使用 toFixed() 方法限定小数位数}return r…