更新记录

1.0.0(2026-02-11)

  • 单人的姿态检测和实时帧显示

平台兼容性

uni-app x(4.51)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 7.0 × × ×

其他

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

biming-yoloSeries

基于 TensorFlow Lite Posenet 的 Android 端人体姿态识别与摄像头预览插件。支持实时姿态检测、拍照、帧截取以及静态图片识别。

平台支持

  • Android

使用方式

uni-app x 项目中引入组件。

<template>
    <view style="flex: 1;">
        <biming-yoloSeries
            ref="yoloRef"
            defaultCamera="back"
            style="width: 100%; height: 100%;"
        ></biming-yoloSeries>

        <button @click="switchCam">切换摄像头</button>
        <button @click="startDetect">开始检测</button>
        <button @click="stopDetect">停止检测</button>
        <button @click="takePhoto">拍照</button>
    </view>
</template>

<script lang="uts">
    import { Person } from 'org.tensorflow.lite.examples.posenet.lib';

    export default {
        methods: {
            switchCam() {
                (this.$refs['yoloRef'] as ComponentPublicInstance).$callMethod('switchCamera');
            },
            startDetect() {
                (this.$refs['yoloRef'] as ComponentPublicInstance).$callMethod('startPoseDetection', (person: Person) => {
                    console.log("检测到人体:", person);
                    // person.keyPoints 包含关键点信息
                });
            },
            stopDetect() {
                (this.$refs['yoloRef'] as ComponentPublicInstance).$callMethod('stopPoseDetection');
            },
            takePhoto() {
                (this.$refs['yoloRef'] as ComponentPublicInstance).$callMethod('captureImage', (base64: string) => {
                    console.log("拍照结果长度:", base64.length);
                });
            }
        }
    }
</script>

API

Props 属性

参数 类型 默认值 说明
defaultCamera String 'back' 初始摄像头位置。可选值:'back' (后置), 'front' (前置)

Methods 方法

组件通过 expose 暴露了以下方法,可通过 ref 调用。

switchCamera()

切换摄像头(在前置、后置、外接摄像头之间循环切换)。

captureImage(callback)

拍照并获取图片的 Base64 编码。

  • 参数:
    • callback: (base64: string) => void - 回调函数,接收图片的 Base64 字符串。

getFrameBase64(callback)

获取当前预览画面的帧数据(Base64)。

  • 参数:
    • callback: (success: boolean, base64: string) => void - 回调函数。
    • success: 是否获取成功。
    • base64: 图片 Base64 字符串。

startPoseDetection(callback)

开启实时人体姿态检测。开启后,会在预览画面上绘制骨骼关键点,并持续触发回调。

  • 参数:
    • callback: (person: Person) => void - 检测回调函数,接收 Person 对象。

stopPoseDetection()

停止实时姿态检测,并清除画面上的骨骼绘制。

predictBase64(src, callback)

对给定的 Base64 图片进行姿态识别(非实时流)。

  • 参数:
    • src: string - 图片的 Base64 字符串。
    • callback: (result: number, msg: Person) => void - 回调函数。
    • result: 状态码,0 表示成功,1 表示失败。
    • msg: 识别结果 Person 对象(失败时为空对象)。

数据结构

Person

识别结果对象,主要包含以下字段:

  • keyPoints: List<KeyPoint> - 关键点列表。
  • score: Float - 整体置信度。

KeyPoint

关键点对象:

  • bodyPart: BodyPart - 身体部位枚举(如 NOSE, LEFT_EYE 等)。
  • position: Position - 坐标位置 {x, y}
  • score: Float - 该点的置信度。

注意事项

  1. 仅支持 Android 平台。
  2. 需确保项目已配置相机权限。
  3. 模型文件 posenet_model.tflite 需内置在插件或相关资源路径中(插件内部已处理加载)。

隐私、权限声明

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

android.permission.CAMERA

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

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

暂无用户评论。