收藏
回答

wx.createVKSession人脸识别传入onCameraFrame实时帧数据识别不到人像?

// pages/audio/index.ts

Page({


  /**

   * 页面的初始数据

   */

  data: {

    audioUrl: '',

    videoUrl: ''

  },


  /**

   * 生命周期函数--监听页面加载

   */

  onLoad() {

    videoCtx = wx.createCameraContext();

    let count = 0;

    listener = videoCtx.onCameraFrame((frame:any) => {

      count++;

      if (count === 10{

        this.detectFace(frame);

        count = 0;

      }

    });

    VKSession = wx.createVKSession({

      version: 'v1',

      track: {

        plane: {

          mode: 1

        },

        face: { mode: 2 }

      }

    });

    VKSession.on('updateAnchors', (anchors:any) => {

      console.warn('anchors', anchors);

    })

   

  },

  handleStart() {

    videoCtx.startRecord({

      timeoutCallback: (res:any) => {

        console.warn(res);

        this.setData({

          videoUrl: res.tempVideoPath

        })

      },

      timeout: 300,

      complete: (res:any) => {

        console.warn('videoCtx.startRecord complete', res);

      }

    });

    VKSession.start((errno:any) => {

      console.warn('VKSession.start errno', errno);

    });

    listener.start();

  },

  handleStop() {

    listener.stop({

      complete: (res:any) => {

        console.warn('listener.stop', res);

      }

    });

    VKSession.stop();

    videoCtx.stopRecord({

      compressed: true,

      success: (res:any) => {

        console.warn('videoCtx.stopRecord success', res);

        this.setData({

          videoUrl: res.tempVideoPath

        })

      },

      fail: (res:any) => {

        console.warn('videoCtx.stopRecord fail', res);

      }

    });

  },

  async detectFace(frame:any) {

    console.warn(frame.data);

    VKSession.detectFace({

      frameBuffer: frame.data,

      width: frame.width,

      height: frame.height,

      scoreThreshold: 0.8,

      sourceType: 0,

      modelMode: 1

    });

  },

  handleError() {},

});



代码片段: https://developers.weixin.qq.com/s/yoorZhmf7aJ6

最后一次编辑于  2023-06-27
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2023-08-14

    你好,把你的console.warn('anchors', anchors); 改成  anchors.forEach(anchor => {

        console.log('anchor.points', anchor.points)

        console.log('anchor.origin', anchor.origin)

        console.log('anchor.size', anchor.size)

        console.log('anchor.angle', anchor.angle)

      })

    2023-08-14
    有用
    回复 3
    • 林太白
      林太白
      2023-10-16
      这个是压根检测不到,应该跟输出无关吧.
      2023-10-16
      回复
    • sher
      sher
      03-20
      请问一下,这些值拿到以后,怎么去做人脸有无被遮挡呢
      03-20
      回复
    • sher
      sher
      03-20回复林太白
      能检测到,是获取值的方法不对
      03-20
      回复
  • huangwx
    huangwx
    2023-06-27

    兄弟给个代码片段,我提供点之前把玩的线索:我碰到开发工具不正常,但是真机正常的情况,感觉是frame的宽和高在开发工具和真机不同导致

    2023-06-27
    有用
    回复 5
    • 展昭
      展昭
      2023-06-27
      https://developers.weixin.qq.com/s/yoorZhmf7aJ6
      2023-06-27
      回复
    • 展昭
      展昭
      2023-07-06
      老哥,有解决吗
      2023-07-06
      回复
    • 冷暖自知🍃
      冷暖自知🍃
      2023-08-09回复展昭
      兄弟 我试你的可以打印出来啊,
      2023-08-09
      回复
    • 林太白
      林太白
      2023-10-16回复展昭
      解决了吗,跟微信官方版本有关吗?
      2023-10-16
      回复
    • Zeppo
      Zeppo
      2023-10-31回复展昭
      大佬,你摄像头开启没问题吗?我用官方的代码为啥连摄像头都打不开
      2023-10-31
      回复
登录 后发表内容