2015-07-09 69 views
3

我試圖用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上運行?

回答

1

latest commit已解除此問題(來自issue #47)。

+1

var tracking = require('./code/tracking') ReferenceError:窗口未定義? – octameter

+0

順便說一句,tracking.js使用canvas和許多其他相關的DOM節點。您應該考慮提取矢量計算並對其進行調整。 tracking.js的重點在於依靠畫布/媒體來檢測運動。我不知道如何使用節點。 – Bwaxxlo

+0

使用了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

0

作爲附加的解決方案 - 你可以看看Webgazer tracker - 這個提供了開箱即用的眼動追蹤。您也可以選擇使用哪個追蹤庫(包括跟蹤選項中的tracking.js)。

UPD

我已經在這個演示工人創造了一個版本tracking.js wolring的 - https://plnkr.co/edit/5sRi4H7nhypRy610Nx4K?p=preview,這不是一個完全的Node.js窗口少的環境,但接近。希望這可能是有幫助的。