From c56316d7ebe0f8613588ddd513eaa1f76389cd1a Mon Sep 17 00:00:00 2001 From: Tim Perry Date: Thu, 24 Dec 2015 20:40:15 +0100 Subject: [PATCH] Add tracking.js --- tracking/tracking-tests.ts | 55 ++++++++++++++++++++++++++++++++++++++ tracking/tracking.d.ts | 40 +++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 tracking/tracking-tests.ts create mode 100644 tracking/tracking.d.ts diff --git a/tracking/tracking-tests.ts b/tracking/tracking-tests.ts new file mode 100644 index 000000000..e1fdd8560 --- /dev/null +++ b/tracking/tracking-tests.ts @@ -0,0 +1,55 @@ +/// + +// 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); diff --git a/tracking/tracking.d.ts b/tracking/tracking.d.ts new file mode 100644 index 000000000..cf8b228e3 --- /dev/null +++ b/tracking/tracking.d.ts @@ -0,0 +1,40 @@ +// Type definitions for Tracking.js v1.1.2 +// Project: https://github.com/eduardolundgren/tracking.js +// Definitions by: Tim Perry +// 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; +}