我在 Node v8.11.0 上运行了posenet 模型。这是我运行的代码。输出结果不显示每个姿势的位置,仅显示[Object]。看起来 Canvas 有问题。
这是一个在 Ubuntu 中的命令行(而不是浏览器)中运行的简单代码。
脚本.js:
global.XMLHttpRequest = require("xhr2");
const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');
const fetch = require('node-fetch');
const {Image, createCanvas} = require('canvas');
const posenet = require('@tensorflow-models/posenet')
const assert = require('assert');
const fs = require('fs');
const path = require('path');
const png_image = `${__dirname}/image`;
async function run() {
let img = new Image();
img.src = fs.readFileSync(path.join(png_image, '01_standing.png'));
const canvas = createCanvas(img.width,img.height);
canvas.getContext('2d').drawImage(img,0,0);
const imageScaleFactor = 0.5;
const flipHorizontal = false;
const outputStride = 8;
const multiplier = 0.5;
const net = await posenet.load(multiplier);
const pose = await net.estimateSinglePose(canvas, imageScaleFactor, flipHorizontal, outputStride);
console.log(pose);
return pose;
}
run();
package.json:
{
"name": "tf",
"version": "1.0.0",
"main": "script.js",
"license": "MIT",
"dependencies": {
"canvas": "*",
"xhr2": "*",
"@tensorflow-models/posenet": "^1.0.2",
"@tensorflow/tfjs": "^1.1.0",
"@tensorflow/tfjs-node": "^0.1.19",
"node-fetch": "^2.6.0"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"description": ""
}
命令:
npm install
node script.js
结果一定是这样的:
{
"score":0.9306272794218624,
"keypoints":[
{
"score":0.9992092251777649,
"part":"nose",
"position":{
"x":584.1284123357551,
"y":540.4772608240223
}
},
.
.
.
}
但输出如下:
{ score: 0.9306272794218624,
keypoints: [
{
score: 0.9992092251777649,
part: 'nose',
position: [Object]
},
.
.
.
}
我的代码有什么问题吗?
最佳答案
这很可能是由于字符串化了 js 不知道如何转换的对象。
如果你的 pose
仍然是一个正确的 js 对象,请尝试
console.log(JSON.stringify(pose));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
关于javascript - Node.js 中的posenet TensorFlow 模型结果中没有位置详细信息 ("x","y"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56482333/