VKSession
vision kit 会话对象
支持情况:

方法
| 参数 | 类型 | 说明 |
|---|---|---|
| state | keyof IState | 会话状态 |
| config | IConfig | 会话配置 |
| cameraSize | ISize | 相机尺寸 |
addMarker
添加一个 marker,要求调 Taro.createVKSession 时传入的 track.marker 为 true
支持情况:

(path: string) => number
| 参数 | 类型 | 说明 |
|---|---|---|
| path | string | 图片路径,目前只支持本地用户图片 |
addOSDMarker
添加一个 OSD marker(one-shot detection marker),要求调 Taro.createVKSession 时传入的 track.OSD 为 true
支持情况:

(path: string) => number
| 参数 | 类型 | 说明 |
|---|---|---|
| path | string | 图片路径,目前只支持本地用户图片 |
cancelAnimationFrame
取消由 requestAnimationFrame 添加到计划中的动画帧请求
支持情况:

(requestID: number) => void
| 参数 | 类型 |
|---|---|
| requestID | number |
destroy
销毁会话
支持情况:

() => void
detectBody
静态图像人体关键点检测。当 Taro.createVKSession 参数传入 {track: {body: {mode: 2} } } 时可用。
支持情况:

(option: IDetectBodyOption) => void
| 参数 | 类型 |
|---|---|
| option | IDetectBodyOption |
detectDepth
深度识别。当 Taro.createVKSession 参数传入 {track: {depth: {mode: 2} } } 时可用。
支持情况:

(option: IDetectDepthOption) => void
| 参数 | 类型 |
|---|---|
| option | IDetectDepthOption |
detectFace
静态图像人脸关键点检测。当 Taro.createVKSession 参数传入 {track: {face: {mode: 2} } } 时可用。安卓微信8.0.25开始支持,iOS微信8.0.24开始支持。
支持情况:

(option: IDetectFaceOption) => void
| 参数 | 类型 |
|---|---|
| option | IDetectFaceOption |
detectHand
静态图像手势关键点检测。当 Taro.createVKSession 参数传入 {track: {hand: {mode: 2} } } 时可用。
支持情况:

(option: IDetectHandOption) => void
| 参数 | 类型 |
|---|---|
| option | IDetectHandOption |
getAllMarker
获取所有 marker,要求调 Taro.createVKSession 时传入的 track.marker 为 true
支持情况:

() => IMarker[]
getAllOSDMarker
获取所有 OSD marker,要求调 Taro.createVKSession 时传入的 track.OSD 为 true
支持情况:

() => IOSDMarker[]
getVKFrame
获取帧对象,每调用一次都会触发一次帧分析过程
支持情况:

(width: number, height: number) => VKFrame
| 参数 | 类型 | 说明 |
|---|---|---|
| width | number | 宽度 |
| height | number | 高度 |
hitTest
触摸检测,v1 版本只支持单平面(即 hitTest 生成一次平面后,后续 hitTest 均不会再生成平面,而是以之前生成的平面为基础进行检测)。
如果需要重新识别其他平面,可以在调用此方法时将 reset 参数置为 true。
支持情况:

(x: number, y: number, reset?: boolean) => IHitTestResult[]
| 参数 | 类型 | 说明 |
|---|---|---|
| x | number | 相对视窗的横坐标,取值范围为 [0, 1],0 为左边缘,1 为右边缘 |
| y | number | 相对视窗的纵坐标,取值范围为 [0, 1],0 为上边缘,1 为下边缘 |
| reset | boolean | 是否需要重新识别其他平面,v2 版本不再需要此参数 |
off
取消监听会话事件。
支持情况:

(eventName: string, fn: TaroGeneral.EventCallback) => void
| 参数 | 类型 | 说明 |
|---|---|---|
| eventName | string | 事件名称 |
| fn | TaroGeneral.EventCallback | 事件监听函数 |
on
监听会话事件。
支持情况:

(eventName: string, fn: TaroGeneral.EventCallback) => void
| 参数 | 类型 | 说明 |
|---|---|---|
| eventName | string | 事件名称 |
| fn | TaroGeneral.EventCallback | 事件监听函数 |
removeMarker
删除一个 marker,要求调 Taro.createVKSession 时传入的 track.marker 为 true
支持情况:

(markerId: number) => number
| 参数 | 类型 | 说明 |
|---|---|---|
| markerId | number | marker id |
removeOSDMarker
删除一个 OSD marker,要求调 Taro.createVKSession 时传入的 track.OSD 为 true
支持情况:

(markerId: number) => number
| 参数 | 类型 | 说明 |
|---|---|---|
| markerId | number | marker id |
requestAnimationFrame
在下次进行重绘时执行。
支持情况:

(callback: TaroGeneral.TFunc) => number
| 参数 | 类型 | 说明 |
|---|---|---|
| callback | TaroGeneral.TFunc | 执行函数 |
runOCR
静态图像 OCR 检测。当 Taro.createVKSession 参数传入 {track: {OCR: {mode: 2} } } 时可用。
支持情况:

(option: IRunOCROption) => void
| 参数 | 类型 |
|---|---|
| option | IRunOCROption |
start
开启会话。
支持情况:

(callback: (status: keyof IStartStatus) => void) => void
| 参数 | 类型 | 说明 |
|---|---|---|
| callback | (status: keyof IStartStatus) => void | 开启会话回调 |
stop
停止会话。
支持情况:

() => void
update3DMode
开启 3D 模式
支持情况:

(open3d: boolean) => void
| 参数 | 类型 | 说明 |
|---|---|---|
| open3d | boolean | 是否开启 |
updateOSDThreshold
更新 OSD 识别精确度,要求调 Taro.createVKSession 时传入的 track.OSD 为 true
支持情况:

(threshold: number) => void
| 参数 | 类型 | 说明 |
|---|---|---|
| threshold | number | 阈值 |
参数
IState
state 的合法值
| 参数 | 说明 |
|---|---|
| 0 | 不可用 |
| 1 | 运行中 |
| 2 | 暂停中 |
| 3 | 初始化中 |
IConfig
会话配置
| 参数 | 类型 | 说明 |
|---|---|---|
| version | keyof IVersion | 不可用 |
| track | ITrack | 运行中 |
| marker | boolean | marker 跟踪配置,基础库(3.0.0)开始允许同时支持v2的水平面检测能力 |
| OSD | boolean | OSD 跟踪配置 |
| depth | IDepth | 深度识别配置 |
| face | IFace | 人脸检测配置。安卓微信8.0.25开始支持,iOS微信8.0.24开始支持。 |
| OCR | IOCR | OCR 检测配置。 |
| body | IBody | 人体检测配置。 |
| hand | IHand | 手势检测配置。 |
| threeDof | boolean | 提供基础AR功能,输出相机旋转的3个自由度的位姿,利用手机陀螺仪传感器,实现快速稳定的AR定位能力,适用于简单AR场景。 |
| gl | WebGLRenderingContext | 绑定的 WebGLRenderingContext 对象 |
IVersion
vision kit 版本
| 参数 | 说明 |
|---|---|
| v1 | 旧版本 |
| v2 | v2 版本,目前只有 iOS 基础库 2.22.0 以上支持 |
ITrack
跟踪配置
| 参数 | 类型 | 说明 |
|---|---|---|
| plane | IPlane | 平面跟踪配置 |
IPlane
平面跟踪配置
| 参数 | 类型 | 说明 |
|---|---|---|
| mode | keyof IPlaneMode | 平面跟踪配置模式 |
IPlaneMode
平面跟踪配置模式合法值
| 参数 | 说明 |
|---|---|
| 1 | 检测横向平面 |
| 2 | 检测纵向平面,只有 v2 版本支持 |
| 3 | 检测横向和纵向平面,只有 v2 版本支持 |
IDepth
深度识别配置
| 参数 | 类型 |
|---|---|
| mode | keyof IDepthMode |
IDepthMode
深度识别模式
| 参数 | 说明 |
|---|---|
| 1 | 通过摄像头实时检测 |
| 2 | 静态图片检测 |
IFace
人脸检测模式
| 参数 | 类型 |
|---|---|
| mode | keyof IFaceMode |
IFaceMode
人脸检测模式
| 参数 | 说明 |
|---|---|
| 1 | 通过摄像头实时检测 |
| 2 | 静态图片检测 |
IOCR
OCR 检测配置
| 参数 | 类型 |
|---|---|
| mode | keyof IOCRMode |
IOCRMode
OCR 检测模式
| 参数 | 说明 |
|---|---|
| 1 | 通过摄像头实时检测 |
| 2 | 静态图片检测 |
IBody
人体检测模式
| 参数 | 类型 |
|---|---|
| mode | keyof IBodyMode |
IBodyMode
人体检测模式
| 参数 | 说明 |
|---|---|
| 1 | 通过摄像头实时检测 |
| 2 | 静态图片检测 |
IHand
手势检测配置
| 参数 | 类型 |
|---|---|
| mode | keyof IHandMode |
IHandMode
手势检测模式
| 参数 | 说明 |
|---|---|
| 1 | 通过摄像头实时检测 |
| 2 | 静态图片检测 |
ISize
相机尺寸
| 参数 | 类型 | 说明 |
|---|---|---|
| width | number | 宽度 |
| height | number | 高度 |
IDetectBodyOption
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| frameBuffer | ArrayBuffer | 是 | 人脸图像像素点数据,每四项表示一个像素点的 RGBA |
| width | number | 是 | 图像宽度 |
| height | number | 是 | 图像高度 |
| scoreThreshold | number | 否 | 评分阈值。正常情况传入 0.8 即可。默认值 0.8 |
| sourceType | keyof ISourceType | 否 | 图像源类型。正常情况传入 1 即可。当输入的图片是来自一个连续视频的每一帧图像时,sourceType 传入 0 会得到更优的效果。默认值1 |
ISourceType
图像源类型。
| 参数 | 说明 |
|---|---|
| 1 | 表示输入的图片是随机的图片 |
| 0 | 表示输入的图片是来自一个连续视频的每一帧图像 |
IDetectDepthOption
| 参数 | 类型 | 说明 |
|---|---|---|
| frameBuffer | ArrayBuffer | 人需要识别深度的图像像素点数据,每四项表示一个像素点的 RGBA |
| width | number | 图像宽度 |
| height | number | 图像高度 |
IDetectFaceOption
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| frameBuffer | ArrayBuffer | 是 | 人脸图像像素点数据,每四项表示一个像素点的 RGBA |
| width | number | 是 | 图像宽度 |
| height | number | 是 | 图像高度 |
| scoreThreshold | number | 否 | 评分阈值。正常情况传入 0.8 即可。默认值 0.8 |
| sourceType | keyof ISourceType | 否 | 图像源类型。正常情况传入 1 即可。当输入的图片是来自一个连续视频的每一帧图像时,sourceType 传入 0 会得到更优的效果。默认值1 |
| modelModel | keyof IModelModel | 否 | 算法模型类型。正常情况传入 1 即可。0、1、2 分别表示小、中、大模型,模型越大识别准确率越高,但资源占用也越高。建议根据用户设备性能进行选择。 |
IModelModel
算法模型类型
| 参数 | 说明 |
|---|---|
| 0 | 小模型 |
| 1 | 中模型 |
| 2 | 大模型 |
IDetectHandOption
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| frameBuffer | ArrayBuffer | 是 | 人脸图像像素点数据,每四项表示一个像素点的 RGBA |
| width | number | 是 | 图像宽度 |
| height | number | 是 | 图像高度 |
| scoreThreshold | number | 否 | 评分阈值。正常情况传入 0.8 即可。默认值0.8 |
| algoMode | keyof IAlgoMode | 否 | 算法检测模式 |
IAlgoMode
算法检测模式
| 参数 | 说明 |
|---|---|
| 0 | 检测模式,输出框和点 |
| 1 | 手势模式,输出框和手势分类 |
| 2 | 结合0和1模式,输出框、点、手势分类 |
IMarker
| 参数 | 类型 | 说明 |
|---|---|---|
| markerId | number | marker id |
| path | string | 图片路径 |
IOSDMarker
OSD marker
| 参数 | 类型 | 说明 |
|---|---|---|
| markerId | number | marker id |
| path | string | 图片路径 |
IRunOCROption
| 参数 | 类型 | 说明 |
|---|---|---|
| frameBuffer | ArrayBuffer | 待识别图像的像素点数据,每四项表示一个像素点的 RGBA |
| width | number | 图像宽度 |
| height | number | 图像高度 |
IHitTestResult
hitTest 检测结果
| 参数 | 类型 | 说明 |
|---|---|---|
| transform | Float32Array | 包含位置、旋转、放缩信息的矩阵,以列为主序 |
IStartStatus
start status 的合法值
| 参数 | 说明 |
|---|---|
| 0 | 成功 |
| 2000000 | 系统错误 |
| 2000001 | 参数错误 |
| 2000002 | 设备不支持 |
| 2000003 | 系统不支持 |
| 2003000 | 会话不可用 |
| 2003001 | 未开启系统相机权限 |
| 2003002 | 未开启小程序相机权限 |
API 支持度
| API | 微信小程序 | H5 | React Native | Harmony |
|---|---|---|---|---|
| VKSession | ✔️ | |||
| VKSession.addMarker | ✔️ | |||
| VKSession.addOSDMarker | ✔️ | |||
| VKSession.cancelAnimationFrame | ✔️ | |||
| VKSession.destroy | ✔️ | |||
| VKSession.detectBody | ✔️ | |||
| VKSession.detectDepth | ✔️ | |||
| VKSession.detectFace | ✔️ | |||
| VKSession.detectHand | ✔️ | |||
| VKSession.getAllMarker | ✔️ | |||
| VKSession.getAllOSDMarker | ✔️ | |||
| VKSession.getVKFrame | ✔️ | |||
| VKSession.hitTest | ✔️ | |||
| VKSession.off | ✔️ | |||
| VKSession.on | ✔️ | |||
| VKSession.removeMarker | ✔️ | |||
| VKSession.removeOSDMarker | ✔️ | |||
| VKSession.requestAnimationFrame | ✔️ | |||
| VKSession.runOCR | ✔️ | |||
| VKSession.start | ✔️ | |||
| VKSession.stop | ✔️ | |||
| VKSession.update3DMode | ✔️ | |||
| VKSession.updateOSDThreshold | ✔️ |