Ошибка при обнаружении лиц с помощью Face-api.js Ожидаемый носитель будет иметь тип HTMLImageElement | HTMLVideoElement | HTMLCanvasElement - PullRequest
0 голосов
/ 11 июня 2019

Я не понимаю, как мне отправить HTMLImageElement в процедуру обнаружения face-api.js .. Я использую node-red для этой реализации ..

Iесть эта ошибка:

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