Add tracking.js

This commit is contained in:
Tim Perry
2015-12-24 20:40:15 +01:00
parent 1da639a106
commit c56316d7eb
2 changed files with 95 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
/// <reference path="tracking.d.ts" />
// All tracking tests below are code taken verbatim (or, as close as possible) from the tracking docs: https://trackingjs.com/docs.html
var colors = new tracking.ColorTracker(['magenta', 'cyan', 'yellow']);
colors.on('track', function(event) {
if (event.data.length === 0) {
// No colors were detected in this frame.
} else {
event.data.forEach(function(rect) {
console.log(rect.x, rect.y, rect.height, rect.width, rect.color);
});
}
});
tracking.track('#myVideo', colors);
var myTracker = new tracking.Tracker('target');
myTracker.on('track', function(event) {
if (event.data.length === 0) {
// No targets were detected in this frame.
} else {
event.data.forEach(function(data) {
// Plots the detected targets here.
});
}
});
var trackerTask = tracking.track('#myVideo', myTracker);
trackerTask.stop(); // Stops the tracking
trackerTask.run(); // Runs it again anytime
tracking.ColorTracker.registerColor('green', function(r, g, b) {
if (r < 50 && g > 200 && b < 50) {
return true;
}
return false;
});
var objects = new tracking.ObjectTracker(['face', 'eye', 'mouth']);
objects.on('track', function(event) {
if (event.data.length === 0) {
// No objects were detected in this frame.
} else {
event.data.forEach(function(rect) {
// rect.x, rect.y, rect.height, rect.width
});
}
});
tracking.track('#myVideo', objects);
+40
View File
@@ -0,0 +1,40 @@
// Type definitions for Tracking.js v1.1.2
// Project: https://github.com/eduardolundgren/tracking.js
// Definitions by: Tim Perry <https://github.com/pimterry>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module tracking {
export class ColorTracker extends Tracker {
constructor(colours: string[]);
static registerColor(name: string, predicate: (r: number, g: number, b: number) => boolean): void;
}
export class ObjectTracker extends Tracker {
constructor(objects: string[]);
}
class Tracker {
constructor(target: string);
on(eventName: string, callback: (event: TrackEvent) => void): void;
}
interface TrackEvent {
data: TrackRect[];
}
interface TrackRect {
x: number;
y: number;
height: number;
width: number;
color: string;
}
interface TrackerTask {
stop(): void;
run(): void;
}
export function track(selector: string, tracker: tracking.Tracker): TrackerTask;
}