# [VKSession](/miniprogram/dev/api/ai/visionkit/VKSession) wx.createVKSession(Object object)

> 基础库 2.20.0 开始支持，低版本需做[兼容处理](1003706)。

> __小程序插件__：支持，需要小程序基础库版本不低于 [2.20.0](1003706)

## 功能描述

创建 vision kit 会话对象。详见[指南](/miniprogram/dev/framework/open-ability/visionkit/base.md)

## 参数

### Object object


```json
[
  {
    "属性": "version",
    "类型": "string",
    "默认值": "",
    "必填": "否",
    "说明": "vision kit 版本。",
    "最低版本": "[2.22.0](1003706)",
    "子项": [
      {
        "合法值": "v1",
        "说明": "v1适用于用户在平面场景下，例如桌面，地面，泛平面场景，放置虚拟物体，不提供真实世界距离。用户放置物体时，手机相机倾斜向下对着目标平面点击即可，具有广泛的机型支持"
      },
      {
        "合法值": "v2",
        "说明": "v2提供真实物理距离的 ar 定位功能，提供平面识别功能，用户在平面范围点击放置虚拟物体的功能，具有[有限的机型支持](/miniprogram/dev/framework/open-ability/visionkit/plane.md#%E9%99%84%E5%BD%95)。iOS 设备在基础库 2.22.0 开始支持v2。安卓设备在基础库 2.25.1 开始支持v2，另外，安卓v2不支持竖直平面。**使用v2算法需要初始化，移动手机进行左右平移初始化效果最佳。**"
      }
    ]
  },
  {
    "属性": "track",
    "类型": "Object",
    "默认值": "",
    "必填": "是",
    "说明": "跟踪能力配置，目前不同的跟踪能力之间是互斥的，默认使用平面跟踪能力。需要注意目前 track 中不同的跟踪配置存在互斥关系（比如 marker 跟踪配置和 OSD 跟踪配置不能同时存在），请按需配置。",
    "最低版本": "",
    "子项": [
      {
        "结构属性": "plane",
        "类型": "Object",
        "默认值": "",
        "必填": "是",
        "说明": "平面跟踪配置",
        "最低版本": "",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "平面跟踪配置模式",
            "最低版本": "",
            "子项": [
              {
                "合法值": "1",
                "说明": "检测横向平面",
                "最低版本": ""
              },
              {
                "合法值": "2",
                "说明": "检测纵向平面，只有 v2 版本支持",
                "最低版本": "[2.22.0](1003706)"
              },
              {
                "合法值": "3",
                "说明": "检测横向和纵向平面，只有 v2 版本支持",
                "最低版本": "[2.22.0](1003706)"
              }
            ]
          },
          {
            "结构属性": "force",
            "类型": "boolean",
            "默认值": "false",
            "必填": "否",
            "说明": "是否开启强制使用V2的模式，只有 v2 版本支持",
            "最低版本": "[3.6.5](1003706)"
          }
        ]
      },
      {
        "结构属性": "marker",
        "类型": "boolean",
        "默认值": "",
        "必填": "否",
        "说明": "marker 跟踪配置，基础库(3.0.0)开始允许同时支持v2的水平面检测能力",
        "最低版本": "[2.24.5](1003706)"
      },
      {
        "结构属性": "OSD",
        "类型": "boolean",
        "默认值": "",
        "必填": "否",
        "说明": "OSD 跟踪配置",
        "最低版本": "[2.24.5](1003706)"
      },
      {
        "结构属性": "depth",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "深度识别配置。用法详情[指南文档](/miniprogram/dev/framework/open-ability/visionkit/depth.md)。",
        "最低版本": "[3.0.0](1003706)",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "深度识别模式",
            "最低版本": "[3.0.0](1003706)",
            "子项": [
              {
                "合法值": "1",
                "说明": "通过摄像头实时检测",
                "最低版本": "[3.0.0](1003706)"
              },
              {
                "合法值": "2",
                "说明": "静态图片检测",
                "最低版本": "[3.0.0](1003706)"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "face",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "人脸检测配置。用法详情[指南文档](/miniprogram/dev/framework/open-ability/visionkit/face.md)。安卓微信8.0.25开始支持，iOS微信8.0.24开始支持。",
        "最低版本": "[2.25.0](1003706)",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "人脸检测模式",
            "最低版本": "[2.25.0](1003706)",
            "子项": [
              {
                "合法值": "1",
                "说明": "通过摄像头实时检测",
                "最低版本": "[2.25.0](1003706)"
              },
              {
                "合法值": "2",
                "说明": "静态图片检测",
                "最低版本": "[2.25.0](1003706)"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "OCR",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "OCR检测配置。用法详情[指南文档](/miniprogram/dev/framework/open-ability/visionkit/ocr.md)。",
        "最低版本": "[2.27.0](1003706)",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "OCR检测模式",
            "最低版本": "[2.27.0](1003706)",
            "子项": [
              {
                "合法值": "1",
                "说明": "通过摄像头实时检测",
                "最低版本": "[2.27.0](1003706)"
              },
              {
                "合法值": "2",
                "说明": "静态图片检测",
                "最低版本": "[2.27.0](1003706)"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "IDCard",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "身份证检测配置。用法详情[指南文档](/miniprogram/dev/framework/open-ability/visionkit/idcard.md)。",
        "最低版本": "[3.3.0](1003706)",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "身份证检测模式",
            "最低版本": "[3.3.0](1003706)",
            "子项": [
              {
                "合法值": "2",
                "说明": "静态图片检测",
                "最低版本": "[3.3.0](1003706)"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "body",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "人体检测配置。用法详情[指南文档](/miniprogram/dev/framework/open-ability/visionkit/body.md)。",
        "最低版本": "[2.28.0](1003706)",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "人体检测模式",
            "最低版本": "[2.28.0](1003706)",
            "子项": [
              {
                "合法值": "1",
                "说明": "通过摄像头实时检测",
                "最低版本": "[2.28.0](1003706)"
              },
              {
                "合法值": "2",
                "说明": "静态图片检测",
                "最低版本": "[2.28.0](1003706)"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "hand",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "手势检测配置。用法详情[指南文档](/miniprogram/dev/framework/open-ability/visionkit/hand.md)。",
        "最低版本": "[2.28.0](1003706)",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "手势检测模式",
            "最低版本": "[2.28.0](1003706)",
            "子项": [
              {
                "合法值": "1",
                "说明": "通过摄像头实时检测",
                "最低版本": "[2.28.0](1003706)"
              },
              {
                "合法值": "2",
                "说明": "静态图片检测",
                "最低版本": "[2.28.0](1003706)"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "shoe",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "鞋部检测配置。用法详情[指南文档](/miniprogram/dev/framework/open-ability/visionkit/shoe.md)。",
        "最低版本": "[3.2.1](1003706)",
        "子项": [
          {
            "结构属性": "mode",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "鞋部检测模式",
            "最低版本": "[3.2.1](1003706)",
            "子项": [
              {
                "合法值": "1",
                "说明": "通过摄像头实时检测",
                "最低版本": "[3.2.1](1003706)"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "threeDof",
        "类型": "boolean",
        "默认值": "",
        "必填": "否",
        "说明": "提供基础AR功能，输出相机旋转的3个自由度的位姿，利用手机陀螺仪传感器，实现快速稳定的AR定位能力，适用于简单AR场景。",
        "最低版本": "[2.28.0](1003706)"
      }
    ]
  },
  {
    "属性": "gl",
    "类型": "WebGLRenderingContext",
    "默认值": "",
    "必填": "否",
    "说明": "绑定的 WebGLRenderingContext 对象",
    "最低版本": "[2.23.0](1003706)"
  }
]
```

## 返回值

### [VKSession](/miniprogram/dev/api/ai/visionkit/VKSession)

vision kit 会话对象。错误码参考 [错误码列表](/miniprogram/dev/framework/usability/PublicErrno.md#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8)

## 示例代码

v1 版本：[VisionKit基础能力使用参考](https://github.com/wechat-miniprogram/miniprogram-demo/tree/master/miniprogram/packageAPI/pages/ar/visionkit-basic)
v2 版本：[VisionKit-v2基础能力使用参考](https://github.com/wechat-miniprogram/miniprogram-demo/tree/master/miniprogram/packageAPI/pages/ar/visionkit-basic-v2)
```js
// 以下 demo 以 v2 为例
// 创建 session 对象
const ssession = wx.createVKSession({
  track: {
    plane: {mode: 3},
  },
  version: 'v2',
  gl, // WebGLRenderingContext
})

// 逐帧分析
const onFrame = timestamp => {
  // 开发者可以自己控制帧率
  const frame = session.getVKFrame(canvasWidth, canvasHeight)
    if (frame) {
      // 分析完毕，可以拿到帧对象
      doRender(frame)
    }

  session.requestAnimationFrame(onFrame)
}
session.start(err => {
  if (!err) session.requestAnimationFrame(onFrame)
})

// 渲染函数
const doRender = frame => {
  // ...
}
```
