我試圖用node.js對圖像執行一些顏色跟蹤。我發現tracking.js非常適合這項工作。我已經在瀏覽器中解決了問題。當我試圖移動到node.js時,我意識到tracking.js依賴DOM元素將圖像轉換爲矩陣等。在node.js上使用tracking.js
我的用例看起來與此類似(來自tracking.js示例):
window.onload = function() {
var img = document.getElementById('img');
var demoContainer = document.querySelector('.demo-container');
var tracker = new tracking.ColorTracker(['magenta', 'cyan', 'yellow']);
tracker.on('track', function(event) {
event.data.forEach(function(rect) {
window.plot(rect.x, rect.y, rect.width, rect.height, rect.color);
});
});
tracking.track('#img', tracker);
window.plot = function(x, y, w, h, color) {
console.log('found ',color,' at ',x,y,w,h) // these results would be used in node.js
var rect = document.createElement('div');
document.getElementById('bdy').appendChild(rect);
rect.classList.add('rect');
rect.style.border = '2px solid ' + color;
rect.style.width = w + 'px';
rect.style.height = h + 'px';
rect.style.left = (img.offsetLeft + x) + 'px';
rect.style.top = (img.offsetTop + y) + 'px';
};
};
據我所知,他們提出了一個在回購協議中工作的吞嚥測試,但我無法在任何地方找到合適的模塊。
有沒有一種優雅的替代方法來讓tracking.js在node.js上運行?
var tracking = require('./code/tracking') ReferenceError:窗口未定義? – octameter
順便說一句,tracking.js使用canvas和許多其他相關的DOM節點。您應該考慮提取矢量計算並對其進行調整。 tracking.js的重點在於依靠畫布/媒體來檢測運動。我不知道如何使用節點。 – Bwaxxlo
使用了testunit使用的技巧:require('vm')。Script和'sandbox = function(files,/ * optional */sandbox)var source,script,result; (!(files instanceof Array)){ files = [files]; } source = files.map(function(file){ return fs.readFileSync(file,'utf8'); })。join(''); if(!sandbox)sandbox = {}; } script = new Script(source); result = script.runInNewContext(sandbox); 返回沙箱; }; var tracking = sandbox('./ code/tracking.js',{ navigator:{}, tracking:{}, window:{} })。tracking;' – octameter