更新记录

1.0.1(2025-09-03)

  1. 增加相机录入人脸、相机识别,开启活体、切换摄像头等
  2. 增加人脸库管理
  3. 增加对比两张图片是否是同一个人,获取图片人的年龄、性别等信息

1.0.0(2025-09-03)

  1. 人脸识别

平台兼容性

uni-app(4.08)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - 5.0 - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(4.07)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 - - -

其他

多语言 暗黑模式 宽屏模式

虹软人脸识别离线识别-人脸识别免费版

开发文档

  1. 注册登录虹软开发后台
  2. 创建应用后,右上角点击“添加SDK”按钮,选择“人脸识别 免费”(不要选择到其他版本),选择V3.0版本,然后选择Android平台,java语言等
  3. 集成插件,集成插件步骤请参考 https://www.cnblogs.com/wenrisheng/p/18323027
  4. 下载demo,拷贝demo里的uni_modules/wrs-uts-arcfacefree-so文件夹到项目对应目录,然后在项目里导入:
    import {
    UTSArcFaceFreeSo
} from "@/uni_modules/wrs-uts-arcfacefree-so"
  1. 删除本地基座和手机上以安装的app,重新自定义基座运行
版本

虹软SDK版本号: Android:V3.0,最高支持Android 10

组件


        <wrs-uts-arcfacefree ref="arcfacefree" :style="'width:'+width+'px;height:'+height+'px;'" @onLoadView="onLoadView"
    @onArcfaceEvent="onArcfaceEvent"></wrs-uts-arcfacefree>
  • 使用了改组件的页面要使用nvue或uvue
  • 从相机录入人脸到本地人脸裤

let userName = "张三"
this.$refs["arcfacefree"].startRegister(userName)
  • 从相机识别识别人脸

this.$refs["arcfacefree"].startCompare()
  • 切换摄像头

this.$refs["arcfacefree"].switchCamera()
  • 是否开启活体检测

let open = true
this.$refs["arcfacefree"].setLivenessDetect(open)
  • onLoadView,视图加载事件
  • onArcfaceEvent,人脸注册/识别事件

onArcfaceEvent(e) {
    console.log(JSON.stringify(e))
    let dynamicJSONFields = e.detail.dynamicJSONFields
    let opt = dynamicJSONFields.opt
    switch (opt) {
        case "onRegisterFinished":
            let success = dynamicJSONFields.success
            if (success) {
                this.showToast("注册成功!userName:" + this.userName)
        // uni.navigateBack()
            } else {
                this.showToast("注册失败")
            }
            break;
        case "onRegisterExcept":
            this.showToast("注册异常")
        break;
        case "onRecognized":
            let compareResult = dynamicJSONFields.compareResult.dynamicJSONFields
            let similar = compareResult.similar
            if(similar > 0.8) {
                let userName = compareResult.userName
                this.showToast("识别成功:" + userName)
            }
            break;
        default:
            break;
    }
}

接口


import {
    UTSArcFaceFree,
    UTSFaceEngine
} from "@/uni_modules/wrs-uts-arcfacefree"
let faceEngine = new UTSFaceEngine()
  • 在线激活引擎

UTSArcFaceFree.activeEngine(this.appId, this.sdkKey, (resp) => {
    let code = resp.code
    if (code == 0) {
        this.showMsg("引擎激活成功")
    } else if (code == 90114) {
        this.showMsg("引擎已经激活")
    } else if (code == 98309) { // 该激活码已被其他设备使用
        this.showMsg("该激活码已被其他设备使用");
    } else { // 激活失败
        // 在https://ai.arcsoft.com.cn/ucenter/resource/build/index.html#/help查询激活失败原因

        this.showMsg("激活失败, code:" + code +
            " 在https://ai.arcsoft.com.cn/ucenter/resource/build/index.html#/help查询失败原因");
    }
})
  • 设置识别角度,一些外接到摄像头需要配置识别角度才能识别到人脸

let array = ["0", "90", "180", "270", "all"]
this.showActionSheet(array, (index) => {
    UTSArcFaceFree.setFtOrient(array[index])
})

人脸库管理

  • 初始化人脸库

UTSArcFaceFree.initFaceServer()
  • 获取所有人脸库数据

UTSArcFaceFree.getAllFaces((resp) => {
    console.log(JSON.stringify(resp))
    let data = resp.data
    if (data) {
        this.dataArray.push(...data)
    }
})
  • 批量注册图片

let localImagePath = UTSArcFaceFree.getResourcePath("/static/test.jpg")
let remoteImagePath = "http://192.168.2.248:8080/file/test.jpg"
let userName = "" + new Date().getTime()
let params = {}
params.data = [{
    url: localImagePath,
    userName: userName + "_1"
}, {
    url: remoteImagePath,
    userName: userName + "_2"
}] 
UTSArcFaceFree.registerMoreFace(params, (resp) => {
    this.refreshFaceData()
    this.showMsg(JSON.stringify(resp))
})
  • 删除某个人脸库

// 通过用户名删除
let userName = "张三"
UTSArcFaceFree.deleteByUserName(userName, ()=>{

})
  • 清空人脸库

UTSArcFaceFree.clearAllFaces((resp) => {

})
  • 初始化face变量引擎

faceEngine.initEngine()
  • 释放face变量引擎

faceEngine.unInitEngine()
  • 获取照片人的年龄、性别等信息

let path = "/xxxxx/xx.jpg"
faceEngine.getBitmapPersonInfo(path, (resp) => {
    // {"info":{"face3DAngles":[{"status":0,"yaw":1.9461840391159058,"pitch":0.8821629285812378,"roll":0.6858348250389099}],"faceInfos":[{"faceId":-1,"orient":1}],"genderInfos":[{"gender":0}],"ageInfos":[{"age":44}]}}
    this.showMsg(JSON.stringify(resp))
})
  • 对比两张图片是否是同一个人

let path1 = "/xxxxx/xx1.jpg"
let path2 = "/xxxxx/xx2.jpg"
faceEngine.compareBitmap(path1, path2, (resp) => {
    let score = resp.score 
    if(score >= 0.8) {
        this.showToast("同一个人")
    } else {
        this.showToast("不是同一个人")
    }
    this.showMsg(JSON.stringify(resp))
})

虹软的免费版sdk有效期只有一年,一年以后需要重新下载sdk更新项目,可以联系作者更新或者自己手动更新,自己手动更新步骤如下:

  1. 解压imageutil/ArcsoftImageUtil.zip文件
  2. 将imageutil/ArcsoftImageUtil/libs/arcsoft_image_util.jar文件拷贝到libs下
  3. 将imageutil/ArcsoftImageUtil/libs/arm64-v8a/libarcsoft_image_util.so文件拷贝到libs/arm64-v8a下
  4. 将imageutil/ArcsoftImageUtil/libs/armeabi-v7a/libarcsoft_image_util.so文件拷贝到libs/armeabi-v7a下
  5. 将libs下的所有文件都拷贝到uni_modules/wrs-uts-arcfacefree-so/utssdk/app-android/libs下
  6. 修改uni_modules/wrs-uts-arcfacefree-so/utssdk/app-android/config.json文件: 删除dependencies下的"com.gitee.uniapp_uts.arc-face-free-lib-demo:module_arcfacefree_so:1.0.9",最终改为:

{
    "minSdkVersion": "19"
}
  1. 删除本地基座和手机app,重新自定义基座运行
  2. 采用新的appId、sdkKey激活引擎

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: