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

问题描述

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

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;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)