node.js - BodyPix - 在 node.js 中运行 toMask() 和 toColoredPartMask() 会引发错误:未定义 ImageData
问题描述
我正在尝试在 TensorFlowJS bodypix 模型中获得分段的人部分彩色蒙版。下面的代码在 toColoredPartMask 或 toMask 之前可以正常工作,这会引发错误“ImageData is not defined”。
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;
}
解决方案
推荐阅读
- apache-flink - 读取 Flink 中追加的文件
- android - 更新具有相同签名的 apk 后再次出现被 Play Protect 阻止
- css - CSS 卡片文本在动画上更改/移动
- c++ - C++中迭代器值的垃圾值
- rest - 为什么以及何时应该使用身份提供程序,例如 Auth0 或 Azure AD B2C,而不是仅将用户凭据存储在我的数据库中?
- flutter - flutter_local_notifications 有 onShown 监听器吗?
- sockets - UDP 与 TCP 套接字要求
- spring-mvc - java.lang.ClassCastException:[Ljava.lang.Object;不能施放
- node.js - 一个把手#each 不适用于 Heroku
- java - 使用特定的 ClassLoader 获取 CtClass