BytennEngineContext.onLoad收藏我的收藏
收藏
我的收藏基础库 2.29.0 开始支持本方法,这是一个同步方法。
设置当前 context 的加载成功回调。
语法
BytennEngineContext.onLoad(callback)
参数说明
function callback
回调参数
BytennEngine 实例
返回值
无
代码示例
const app = getApp();
Page({
data: {
item_class: "unknow",
prob: 0,
},
onLoad: function () {
if (this.offscreenCanvas == null) {
this.offscreenCanvas = tt.createOffscreenCanvas();
}
this.utils = require("./utils");
},
createBytennEngine: function () {
const engineCtx = tt.createBytennEngineContext("littleapp_mobilenet", {
backend: "auto",
});
engineCtx.onLoad((engine) => {
this.engine = engine;
});
engineCtx.onError((err) => {
console.log("load error: ", err);
});
engineCtx.load();
},
startInfer: function () {
if (this.cameraCtx == null) {
this.cameraCtx = tt.createCameraContext();
}
this.listener = this.cameraCtx.onCameraFrame((res) => {
this.engine.infer({
dataConfig: {
data: res.data,
width: res.width,
height: res.height,
channel: 4,
dataType: "U8",
dataFormat: "NHWC",
},
convertConfig: [
{
outputChannel: 0,
normalizeFactor: 255,
inputConfig: [
{
inputChannel: 0,
weight: 1.0,
},
],
},
{
outputChannel: 1,
normalizeFactor: 255,
inputConfig: [
{
inputChannel: 1,
weight: 1.0,
},
],
},
{
outputChannel: 2,
normalizeFactor: 255,
inputConfig: [
{
inputChannel: 2,
weight: 1.0,
},
],
},
],
success: (res) => {
const classifications = res;
if (classifications != null) {
const top = 300;
const left = 100;
const embedding = new Float32Array(classifications.data);
const topK = this.utils.topK(
embedding,
this.utils.IMAGENET_CLASSES,
1
);
const { className, probability } = topK[0];
this.setData({
item_class: className,
prob: probability,
});
} else {
console.warn("no predictions!!");
}
},
fail: (err) => {
console.log(err);
},
});
});
this.listener.start();
},
});
Bug & Tip
- Tip: 需在调用 load 前调用本方法设置回调,否则不会触发。
文档评论
登录后可参与评论