更新记录

1.0.0(2026-06-19)

-Android / iOS / HarmonyOS 三端同一套 API。 -全离线推理,支持人脸检测、关键点定位、特征提取、活体检测、年龄/性别/口罩/眼睛/姿态/质量评估、1:1 比对、1:N 识别、人脸库管理。


平台兼容性

uni-app(4.18)

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

其他

多语言 暗黑模式 宽屏模式
×

ly028-OffFace 离线人脸检测识别特真提取

扫码下载体验
📱 下载体验 APK

基于 SeetaFace6 的人脸检测 UTS 原生插件,Android / iOS / HarmonyOS Next 三端完美支持,导出函数完全一致,一套代码三端运行。全离线运行,无需网络连接,数据不出设备。

特性

  • 🔒 全离线 — 本地推理,无需联网,人脸数据不出设备
  • 📱 三端完美一致 — Android / iOS / HarmonyOS Next 导出 API 完全相同,调用端无平台差异
  • 🎯 30+ 个导出函数 — 检测、关键点、特征提取、活体、年龄、性别、口罩、眼睛、姿态、质量、1:1 比对、1:N 识别、人脸库管理
  • 🧩 UTS 插件 — uni-app/uni-app x 原生插件,按需集成

平台兼容

平台 最低版本 架构
Android 7.0 (API 21) arm64-v8a, armeabi-v7a
iOS 12.0 arm64
HarmonyOS Next API 9+ arm64-v8a

集成与调试

HBuilderX 自定义基座运行

  1. 插件市场购买插件后,在 manifest.json → App 原生插件配置中选择 ly028-OffFace
  2. 选择需要使用的模块
  3. 自定义调试基座:菜单栏 → 运行 → 运行到手机或模拟器 → 制作自定义调试基座
  4. 制作完成后,选择自定义基座运行到真机即可调试所有功能

首次使用请确保已关联 uni-app 开发者证书,自定义基座有效期为 7 天,过期后需重新制作。

离线打包

插件为原生代码插件,离线打包需自行集成原生依赖。

快速开始

import * as OffFace from '@/uni_modules/ly028-OffFace'

// 1. 异步初始化引擎
OffFace.initFaceEngineAsync(null, null, (res) => {
    const initResult = JSON.parse(res)
    if (initResult.code === 0) {
        console.log('引擎初始化成功')
    }
})

// 2. 异步检测人脸
OffFace.detectFileAsync('/path/to/image.jpg', (res) => {
    const result = JSON.parse(res)
    if (result.code === 0 && result.data.faceCount > 0) {
        console.log('检测到', result.data.faceCount, '张人脸')
        console.log('第一个人脸:', result.data.faces[0])
    }
})

// 3. 释放引擎
OffFace.releaseEngine()

全量 API 参考

引擎生命周期

API 说明
initFaceEngineAsync(modelBaseUrl?, modelPath?, callback) 初始化引擎,结果通过 callback 返回
releaseEngine() 释放引擎
setAppLanguage(language) 设置语言(zh-Hans / en

人脸检测

API 说明
detectFace(imageData, width, height, channels) 从 RGBA 像素数组检测
detectWithOptions(imageData, w, h, ch, minSize, threshold, flags) 全功能检测(flags 按位组合)
detectFileAsync(filePath, callback) 异步文件检测,结果通过 callback 返回
detectFileWithOptionsAsync(filePath, options, callback) 带选项异步文件检测
detectTestImage(width, height) 测试图像检测

flags 位定义

功能
1 关键点
2 年龄(需额外模型)
4 性别
8 口罩
16 眼睛状态
32 姿态角
64 活体
128 质量评估

活体检测

API 说明
detectFileLivenessAsync(filePath, callback) 异步活体检测
checkLivenessReadyAsync(callback) 异步检查活体模型是否就绪

返回 liveness 值:real(真实)、spoof(伪造)、fuzzy(模糊)、detecting(检测中)

模块管理

API 说明
getModelStatusAsync(callback) 异步获取模型下载状态
getMissingModels() 获取缺失模型列表
downloadModelAsync(name, baseUrl, onResult) 异步下载模型
getLoadStatus() 获取模块加载状态
getModelLoadStatusByFilesAsync(callback) 异步按文件查加载状态
ensureModuleLoaded(moduleName) 确保模块已加载
ensureModulesLoaded(names) 批量确保加载
loadModule(name, modelDir) 手动加载模块
onDownloadProgress(callback) 监听下载进度

人脸识别(FaceDatabase)

API 说明
initFaceDatabaseAsync(modelType, callback) 异步初始化人脸库(light / std)
switchFaceDatabaseAsync(modelType, callback) 异步切换活跃模型
getFaceDatabaseStatusAsync(callback) 异步获取双库状态

特征提取

API 说明
extractFeatureAsync(imageData, width, height, landmarks, callback) 异步提取人脸特征向量

人脸注册

API 说明
registerFaceAsync(imageData, w, h, landmarks, userId, callback) 异步注册人脸
registerFaceByFileAsync(filePath, landmarks, userId?, callback) 从文件注册(空 userId 自动生成)
updateFaceByFileAsync(filePath, landmarks, userId, callback) 更新已注册人脸

1:N 识别

API 说明
identifyFaceAsync(imageData, w, h, landmarks, callback) 异步最佳匹配识别
identifyFaceByFileAsync(filePath, landmarks, callback) 从文件识别
identifyTopNAsync(imageData, w, h, landmarks, n, callback) 异步 Top-N 识别
identifyTopNByFileAsync(filePath, landmarks, topN, callback) 从文件 Top-N

人脸管理

API 说明
deleteFaceAsync(userId, callback) 异步删除人脸
clearFacesAsync(callback) 异步清空所有人脸
getFaceCountAsync(callback) 异步获取人脸数
exportFeaturesAsync(callback) 异步导出所有人脸特征
compareFacesAsync(feature1, feature2, callback) 异步 1:1 特征比对

配置

API 说明
setMinFaceSize(size) 最小人脸像素(默认 40)
setDetectThreshold(threshold) 检测阈值(默认 0.9)

返回值格式

所有 API 返回统一 JSON 信封:

// 成功
{"code": 0, "data": {...}}

// 失败
{"code": 1, "subCode": 500, "msg": "错误描述"}

检测结果结构

{
  "code": 0,
  "data": {
    "faceCount": 1,
    "imageWidth": 1920,
    "imageHeight": 1080,
    "faces": [{
      "rect": {"x": 100, "y": 200, "width": 300, "height": 400},
      "score": 0.98,
      "landmarks": [{"x": 150, "y": 250}, ...],
      "age": 25,
      "gender": "male",
      "mask": false,
      "maskScore": 0.02,
      "eyeLeft": "open",
      "eyeRight": "open",
      "yaw": -5.3, "pitch": 2.1, "roll": 1.0,
      "liveness": "real",
      "quality": {
        "brightness": {"level": "high", "score": 0.95},
        "clarity": {"level": "medium", "score": 0.65},
        "integrity": {"level": "high", "score": 0.90}
      }
    }]
  }
}

识别结果结构

{"code": 0, "data": {"found": true, "userId": "user_abc123", "similarity": 0.87}}

Top-N 结果结构

{"code": 0, "data": {"count": 3, "topN": 5, "results": [
  {"userId": "user_abc", "similarity": 0.87},
  {"userId": "user_def", "similarity": 0.72}
], "duplicates": [], "duplicateThreshold": 0.6}}

注意事项

  1. 引擎只能初始化一次,释放后可再次初始化
  2. 人脸库初始化选择light(512 维,轻量)、std(1024 维,需下载 face_recognizer.csta 约 98MB)
  3. 活体检测需要 fas_first.cstafas_second.csta 两个模型
  4. 年龄检测为热加载模块,需额外下载 age_predictor.csta(约 32MB)
  5. 并发检测内部有互斥锁,同一时间只允许一次检测
  6. 建议图片最大尺寸 1280px,超尺寸自动缩放

隐私声明

  • 本插件不采集任何用户数据
  • 所有人脸检测与识别在设备端离线完成
  • 无需网络权限,不上传任何图像或特征数据

鸿蒙实测图

iOS 实测图

体验

扫码下载体验
📱 下载体验 APK

许可

  • 插件市场购买后获得使用授权
  • 禁止反编译、二次分发

隐私、权限声明

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

Android: CAMERA, READ_EXTERNAL_STORAGE(读取相册图片);iOS: 相机/相册(由前端 uni.chooseImage 触发);鸿蒙: 位置信息(读取相册图片)

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

插件不采集任何数据。所有人脸检测与识别在设备端离线完成,无需网络权限,不上传任何图像或特征数据。

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