Source: trackers/ObjectTracker.js

(function() {
 /**
 * ObjectTracker utility.
 * @constructor
 * @param {string|Array.<string|Array.<number>>} opt_classifiers Optional
 * object classifiers to track.
 * @extends {tracking.Tracker}
 */
 tracking.ObjectTracker = function(opt_classifiers) {
 tracking.ObjectTracker.base(this, 'constructor');
 if (opt_classifiers) {
 if (!Array.isArray(opt_classifiers)) {
 opt_classifiers = [opt_classifiers];
 }
 if (Array.isArray(opt_classifiers)) {
 opt_classifiers.forEach(function(classifier, i) {
 if (typeof classifier === 'string') {
 opt_classifiers[i] = tracking.ViolaJones.classifiers[classifier];
 }
 if (!opt_classifiers[i]) {
 throw new Error('Object classifier not valid, try `new tracking.ObjectTracker("face")`.');
 }
 });
 }
 }
 this.setClassifiers(opt_classifiers);
 };
 tracking.inherits(tracking.ObjectTracker, tracking.Tracker);
 /**
 * Specifies the edges density of a block in order to decide whether to skip
 * it or not.
 * @default 0.2
 * @type {number}
 */
 tracking.ObjectTracker.prototype.edgesDensity = 0.2;
 /**
 * Specifies the initial scale to start the feature block scaling.
 * @default 1.0
 * @type {number}
 */
 tracking.ObjectTracker.prototype.initialScale = 1.0;
 /**
 * Specifies the scale factor to scale the feature block.
 * @default 1.25
 * @type {number}
 */
 tracking.ObjectTracker.prototype.scaleFactor = 1.25;
 /**
 * Specifies the block step size.
 * @default 1.5
 * @type {number}
 */
 tracking.ObjectTracker.prototype.stepSize = 1.5;
 /**
 * Gets the tracker HAAR classifiers.
 * @return {TypedArray.<number>}
 */
 tracking.ObjectTracker.prototype.getClassifiers = function() {
 return this.classifiers;
 };
 /**
 * Gets the edges density value.
 * @return {number}
 */
 tracking.ObjectTracker.prototype.getEdgesDensity = function() {
 return this.edgesDensity;
 };
 /**
 * Gets the initial scale to start the feature block scaling.
 * @return {number}
 */
 tracking.ObjectTracker.prototype.getInitialScale = function() {
 return this.initialScale;
 };
 /**
 * Gets the scale factor to scale the feature block.
 * @return {number}
 */
 tracking.ObjectTracker.prototype.getScaleFactor = function() {
 return this.scaleFactor;
 };
 /**
 * Gets the block step size.
 * @return {number}
 */
 tracking.ObjectTracker.prototype.getStepSize = function() {
 return this.stepSize;
 };
 /**
 * Tracks the `Video` frames. This method is called for each video frame in
 * order to emit `track` event.
 * @param {Uint8ClampedArray} pixels The pixels data to track.
 * @param {number} width The pixels canvas width.
 * @param {number} height The pixels canvas height.
 */
 tracking.ObjectTracker.prototype.track = function(pixels, width, height) {
 var self = this;
 var classifiers = this.getClassifiers();
 if (!classifiers) {
 throw new Error('Object classifier not specified, try `new tracking.ObjectTracker("face")`.');
 }
 var results = [];
 classifiers.forEach(function(classifier) {
 results = results.concat(tracking.ViolaJones.detect(pixels, width, height, self.getInitialScale(), self.getScaleFactor(), self.getStepSize(), self.getEdgesDensity(), classifier));
 });
 this.emit('track', {
 data: results
 });
 };
 /**
 * Sets the tracker HAAR classifiers.
 * @param {TypedArray.<number>} classifiers
 */
 tracking.ObjectTracker.prototype.setClassifiers = function(classifiers) {
 this.classifiers = classifiers;
 };
 /**
 * Sets the edges density.
 * @param {number} edgesDensity
 */
 tracking.ObjectTracker.prototype.setEdgesDensity = function(edgesDensity) {
 this.edgesDensity = edgesDensity;
 };
 /**
 * Sets the initial scale to start the block scaling.
 * @param {number} initialScale
 */
 tracking.ObjectTracker.prototype.setInitialScale = function(initialScale) {
 this.initialScale = initialScale;
 };
 /**
 * Sets the scale factor to scale the feature block.
 * @param {number} scaleFactor
 */
 tracking.ObjectTracker.prototype.setScaleFactor = function(scaleFactor) {
 this.scaleFactor = scaleFactor;
 };
 /**
 * Sets the block step size.
 * @param {number} stepSize
 */
 tracking.ObjectTracker.prototype.setStepSize = function(stepSize) {
 this.stepSize = stepSize;
 };
}());

AltStyle によって変換されたページ (->オリジナル) /