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 前调用本方法设置回调,否则不会触发。
该文档是否有帮助?