调用VKSession.start返回的结果是个null,调用detectFace接口小程序就直接闪退了
<template>
<view class="content">
<image class="logo" src="/static/logo.png" @tap="getBody"></image>
<view class="container page">
<view>
<canvas type="webgl" id="webgl" style="width: 400rpx; height: 400rpx"></canvas>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
data: {}
}
},
onLoad() {
},
methods: {
getBody() {
let ArrayBuffer
let width = 480
let height = 640
uni.chooseImage({
count: 6, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: function (res) {
// 获取图片信息
uni.getImageInfo({
src: res.tempFilePaths[0],
success: function(rep) {
// 读取图片文件
uni.getFileSystemManager().readFile({
filePath: res.tempFilePaths[0],
encoding: 'base64',
success: function(res2) {
// 将base64格式的图片数据保存到变量中
var base64Data = res2.data;
ArrayBuffer = uni.base64ToArrayBuffer(base64Data)
const session = wx.createVKSession({
track: {
face: { mode: 2 } // mode: 1 - 使用摄像头;2 - 手动传入图像
},
})
// 静态图片检测模式下,每调一次 detectFace 接口就会触发一次 updateAnchors 事件
session.on('updateAnchors', 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)
})
})
// 需要调用一次 start 以启动
session.start(errno => {
console.log('开启回话回调: ', errno)
if (errno) {
// 如果失败,将返回 errno
} else {
// 否则,返回null,表示成功
// session.detectFace({
// ArrayBuffer, // 图片 ArrayBuffer 数据。人脸图像像素点数据,每四项表示一个像素点的 RGBA
// width, // 图像宽度
// height, // 图像高度
// scoreThreshold: 0.5, // 评分阈值
// sourceType: 1,
// modelMode: 1,
// })
}
})
},
fail: function(err) {
console.log(err);
}
});
},
fail: function(err) {
console.log(err);
}
});
}
});
},
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
width: 100%;
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
根据多年经验,应该是你的frameBuffer、width、height三个参数有误,要么buffer有错,要么width、height没有与之对应起来,可以直接使用getImageInfo返回的宽高试试。