下属代码讨论的都是位于tfjs-core里面。
容易想到的是,在browser.ts增加:
async function fromPixelsAsync_(
pixels: PixelData | ImageData | HTMLImageElement | HTMLCanvasElement |
HTMLVideoElement,
numChannels = 3): Promise<Tensor3D> {
return await fromPixels(pixels, numChannels);
}
export const fromPixelsAsync = op({fromPixelsAsync_});
但是其实这样会报错,出错在operations.ts:
console.error('Cannot return a Promise inside of tidy.');
这是因为整个TFJS,以export+op导出的接口,默认都是会使用在tidy里面的。但是async接口是无法使用在tidy里面的。我开始debug的时候,一直在找是哪个地方通过tidy调用了fromPixelsAsync。但是其实根本没有。
还好,我记得之前TFJS里面有另一个async 接口,它的写法是这样的:
export const nonMaxSuppressionAsync = nonMaxSuppressionAsync_;
所以修改的方法就是直接去掉op就好了:
import { Tensor3D } from '../tensor';
import { PixelData } from '../types';
import