我不明白应该如何将HTMLimageElement发送到face-api.js的检测例程。我使用node-red
进行此实现。
我有这个错误:UnhandledPromiseRejectionWarning: Error: toNetInput - expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id at /root/.node-red/node_modules/tfjs-image-recognition-base/build/commonjs/dom/toNetInput.js
这是我使用的代码:
var fa = global.get('faceapi');
var ca = global.get('canvas');
const {Image, loadImage, ImageData,createCanvas,HTMLCanvasElement,HTMLImageElement } = ca;
fa.env.monkeyPatch({
Image: HTMLImageElement
})
//Load all the models ...
Promise.all([
fa.nets.ssdMobilenetv1.loadFromDisk('/home/models'),
fa.nets.faceRecognitionNet.loadFromDisk('/home/models'),
fa.nets.faceLandmark68Net.loadFromDisk('/home/models'),
]).then(Detector).catch((error) => node.warn(error));
function Detector(){
ca.loadImage('URL OF MY PICTURE').then((image) =>
{
let detection = fa.detectSingleFace(image).withFaceLandmarks().withFaceDescriptor().then((detect) => {
if(detect){
node.warn('DETECTED..!');
}
});
}).catch((error) => node.warn(error) );
}
1条答案
按热度按时间pxq42qpu1#
我也遇到了同样的问题,我发现我没有向detectSingleFace()函数发送正确的参数,我不知道代码中的 * image * 值里面有什么(在加载图像之后),但要确保发送的是HTML元素(Video、Canvas或Image)。
例如:
请注意,图像应该是base64。
如果问题仍然存在,您可以尝试运行repo项目,看看数据是如何处理的,至少这对我来说是有效的examples-browser文件夹。
希望这对你有帮助,