BodyPix-在node.js中运行toMask()和toColoredPartMask()会引发错误:未定义ImageData

BodyPix-在node.js中运行toMask()和toColoredPartMask()会引发错误:未定义ImageData,node.js,tensorflow.js,masking,Node.js,Tensorflow.js,Masking,我试图在TensorFlowJS bodypix模型中获得分段的人部分彩色面具。下面的代码在toColoredPartMask或toMask之前工作正常,这会引发错误“ImageData未定义” 您确定路径正确吗?fs.existsSync(path)返回什么?我理解,但我需要您运行fs.existsSync(path),因为就我所知,这是唯一可能导致错误的东西。我已经编辑了代码,但它再次执行相同的操作。并且fs.existsSync返回true。它将控制台打印为:readImage。。。加载模

我试图在TensorFlowJS bodypix模型中获得分段的人部分彩色面具。下面的代码在toColoredPartMask或toMask之前工作正常,这会引发错误“ImageData未定义”


您确定路径正确吗?
fs.existsSync(path)
返回什么?我理解,但我需要您运行
fs.existsSync(path)
,因为就我所知,这是唯一可能导致错误的东西。我已经编辑了代码,但它再次执行相同的操作。并且fs.existsSync返回true。它将控制台打印为:readImage。。。加载模型。。。个人零件。。。图像高度:1280 |图像宽度:720到浏览图像数据。。。错误=>ReferenceError:ImageData未定义您是否可以尝试
const maskedImageData=bodyPix.toColoredPartMask(segmentedPersonParts)
toColoredPartMask的第二个参数是
PartColoredPartMask
,它不是一个布尔值,而是一个数字数组。
const tfjsnode = require('@tensorflow/tfjs-node')
const bodyPix = require('@tensorflow-models/body-pix');
const fs = require('fs');

setTimeout(async () => {
    maskImageWithBodyPix().then(response => {
        console.log(response)
    }).catch(e => {
        console.log("Error => " + e)
    })
}, 1000)

async function maskImageWithBodyPix(image = readImage("./person.jpeg")) {
    
    console.log("loadModel ...");
    if (image == null)
        return Promise.resolve("Image Not Found...")
    const resNet = {
        architecture: 'ResNet50',
        outputStride: 16,
        quantBytes: 4
    };
    let bodyModel = await bodyPix.load(resNet)

    console.log("segmentPersonParts ...");
    let segmentedPersonParts = await bodyModel.segmentPersonParts(image, {
        flipHorizontal: false,
        internalResolution: 'full',
        segmentationThreshold: 0.5,
    })
    console.log(`ImageHeight: ${segmentedPersonParts.height} | ImageWidth: ${segmentedPersonParts.width}`)
    console.log("toMaskImageData ...")
    const maskedImageData = bodyPix.toColoredPartMask(segmentedPersonParts, false);

    console.log(`maskedImageData = ${maskedImageData}`)
    
    return Promise.resolve(true)
}

const readImage = path => {
    console.log(`readImage ...`)
    if (!fs.existsSync(path))
        return null
    const imageBuffer = fs.readFileSync(path);
    const tfimage = tfjsnode.node.decodeImage(imageBuffer);
    return tfimage;
}