tracking.js macht es ziemlich einfach, ein Gesicht auf einem <img>
zu erkennen. Sie haben eine wonderful hello world example dafür, aber ich fragte mich, ob jemand noch herausgefunden, wie man ein Gesicht auf einem <canvas>
Element erkennen kann.Face-Tracking auf Leinwand über tracking.js
Ich habe versucht:
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
img = img = context.getImageData(0, 0, canvas.width, canvas.height);
var tracker = new tracking.ObjectTracker(['face']);
tracker.setStepSize(1.7);
tracking.track('#canvas', tracker);
tracker.on('track', function(event) {
event.data.forEach(function(rect) {
window.plot(rect.x, rect.y, rect.width, rect.height);
});
});
window.plot = function(x, y, w, h) {
var rect = document.createElement('div');
document.querySelector('#preview').appendChild(rect);
rect.classList.add('rect');
rect.style.width = w + 'px';
rect.style.height = h + 'px';
rect.style.left = (img.offsetLeft + x) + 'px';
rect.style.top = (img.offsetTop + y) + 'px';
rect.style.borderColor = '#ff0000';
};
Nichts geschieht: -/
Schauen Sie sich einfach ihren Quellcode an. Ich fand 'tracking.trackCanvas_ = Funktion (Element, Tracker) {' Zeile 166 in der Datei 'src/tracker.js' – Blindman67
Danke für die Überprüfung! Durch Ihren Kommentar wurde mir jedoch klar, dass sie jedes Bild oder Video zur Erkennung von Merkmalen auf eine Leinwand schieben. Laut dem Code sollte ein Bild von einer Leinwand gut funktionieren, aber ich bekomme es nicht zum Laufen. Hier ist eine Fiedel basierend auf dem ** Hallo Welt Beispiel ** mit 'Leinwand' anstelle von' img'. Was läuft falsch? https://jsfiddle.net/atv6w3g8/5/ – zaph0t