ngx-face-api-js
Version:
Angular directives for face detection and face recognition in the browser. It is a wrapper for face-api.js, so it is not dependent on the browser implementation.
101 lines • 7.95 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable, Optional, Inject } from '@angular/core';
import * as faceapi from 'face-api.js';
import { of, fromEvent, interval } from 'rxjs';
import { switchMap, shareReplay } from 'rxjs/operators';
import { ModelLoaderService } from './model-loader.service';
import { FaceDetectionOptions } from '../tokens/FaceDetectionOptions';
var FaceDetectorService = /** @class */ (function () {
function FaceDetectorService(modelLoader, option) {
this.modelLoader = modelLoader;
this.option = option;
}
/**
* @param {?} task
* @return {?}
*/
FaceDetectorService.prototype.detect = /**
* @param {?} task
* @return {?}
*/
function (task) {
var _this = this;
if (task.realtime === true) {
return of(task).pipe(switchMap((/**
* @param {?} t
* @return {?}
*/
function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, t.target];
case 1: return [2 /*return*/, _a.sent()];
}
}); }); })), switchMap((/**
* @param {?} video
* @return {?}
*/
function (video) { return fromEvent(video, 'loadeddata'); })), switchMap((/**
* @return {?}
*/
function () { return _this.modelLoader.loadForFeature(task.tokens); })), switchMap((/**
* @return {?}
*/
function () { return interval(300); })), switchMap((/**
* @return {?}
*/
function () { return task.detect(_this.option); })), shareReplay(1));
}
return of(task).pipe(switchMap((/**
* @param {?} t
* @return {?}
*/
function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, t.target];
case 1: return [2 /*return*/, _a.sent()];
}
}); }); })), switchMap((/**
* @param {?} image
* @return {?}
*/
function (image) { return fromEvent(image, 'load'); })), switchMap((/**
* @return {?}
*/
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.modelLoader.loadForFeature(task.tokens)];
case 1: return [2 /*return*/, _a.sent()];
}
}); }); })), switchMap((/**
* @return {?}
*/
function () { return task.detect(_this.option); })), shareReplay(1));
};
FaceDetectorService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
FaceDetectorService.ctorParameters = function () { return [
{ type: ModelLoaderService },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FaceDetectionOptions,] }] }
]; };
return FaceDetectorService;
}());
export { FaceDetectorService };
if (false) {
/**
* @type {?}
* @private
*/
FaceDetectorService.prototype.modelLoader;
/**
* @type {?}
* @private
*/
FaceDetectorService.prototype.option;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZS1kZXRlY3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWZhY2UtYXBpLWpzLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2ZhY2UtZGV0ZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEtBQUssT0FBTyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV0RTtJQUVFLDZCQUNVLFdBQStCLEVBRy9CLE1BQXFDO1FBSHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUcvQixXQUFNLEdBQU4sTUFBTSxDQUErQjtJQUM1QyxDQUFDOzs7OztJQUVHLG9DQUFNOzs7O0lBQWIsVUFBYyxJQUFnQjtRQUE5QixpQkFrQkM7UUFqQkMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUMxQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2xCLFNBQVM7Ozs7WUFBQyxVQUFNLENBQUM7OzRCQUFJLHFCQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUE7NEJBQWQsc0JBQUEsU0FBYyxFQUFBOztxQkFBQSxFQUFDLEVBQ3BDLFNBQVM7Ozs7WUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQTlCLENBQThCLEVBQUMsRUFDbEQsU0FBUzs7O1lBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBNUMsQ0FBNEMsRUFBQyxFQUM3RCxTQUFTOzs7WUFBQyxjQUFNLE9BQUEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFiLENBQWEsRUFBQyxFQUM5QixTQUFTOzs7WUFBQyxjQUFNLE9BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLEVBQXhCLENBQXdCLEVBQUMsRUFDekMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7U0FDSDtRQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbEIsU0FBUzs7OztRQUFDLFVBQU0sQ0FBQzs7d0JBQUkscUJBQU0sQ0FBQyxDQUFDLE1BQU0sRUFBQTt3QkFBZCxzQkFBQSxTQUFjLEVBQUE7O2lCQUFBLEVBQUMsRUFDcEMsU0FBUzs7OztRQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBeEIsQ0FBd0IsRUFBQyxFQUM1QyxTQUFTOzs7UUFBQzs7d0JBQVkscUJBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFBO3dCQUFsRCxzQkFBQSxTQUFrRCxFQUFBOztpQkFBQSxFQUFDLEVBQ3pFLFNBQVM7OztRQUFDLGNBQU0sT0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsRUFBeEIsQ0FBd0IsRUFBQyxFQUN6QyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNKLENBQUM7O2dCQTNCRixVQUFVOzs7O2dCQUpGLGtCQUFrQjtnREFRdEIsUUFBUSxZQUNSLE1BQU0sU0FBQyxvQkFBb0I7O0lBdUJoQywwQkFBQztDQUFBLEFBNUJELElBNEJDO1NBM0JZLG1CQUFtQjs7Ozs7O0lBRTVCLDBDQUF1Qzs7Ozs7SUFDdkMscUNBRTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZmFjZWFwaSBmcm9tICdmYWNlLWFwaS5qcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZnJvbUV2ZW50LCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTW9kZWxMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbC1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZXRlY3RUYXNrIH0gZnJvbSAnLi4vY2xhc3Nlcy9EZXRlY3RUYXNrJztcbmltcG9ydCB7IEZhY2VEZXRlY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vdG9rZW5zL0ZhY2VEZXRlY3Rpb25PcHRpb25zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZhY2VEZXRlY3RvclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGVsTG9hZGVyOiBNb2RlbExvYWRlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZhY2VEZXRlY3Rpb25PcHRpb25zKVxuICAgIHByaXZhdGUgb3B0aW9uPzogZmFjZWFwaS5GYWNlRGV0ZWN0aW9uT3B0aW9ucyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBkZXRlY3QodGFzazogRGV0ZWN0VGFzayk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRhc2sucmVhbHRpbWUgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBvZih0YXNrKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgdCA9PiBhd2FpdCB0LnRhcmdldCksXG4gICAgICAgIHN3aXRjaE1hcCh2aWRlbyA9PiBmcm9tRXZlbnQodmlkZW8sICdsb2FkZWRkYXRhJykpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5tb2RlbExvYWRlci5sb2FkRm9yRmVhdHVyZSh0YXNrLnRva2VucykpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gaW50ZXJ2YWwoMzAwKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0YXNrLmRldGVjdCh0aGlzLm9wdGlvbikpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZih0YXNrKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGFzeW5jIHQgPT4gYXdhaXQgdC50YXJnZXQpLFxuICAgICAgc3dpdGNoTWFwKGltYWdlID0+IGZyb21FdmVudChpbWFnZSwgJ2xvYWQnKSksXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5tb2RlbExvYWRlci5sb2FkRm9yRmVhdHVyZSh0YXNrLnRva2VucykpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRhc2suZGV0ZWN0KHRoaXMub3B0aW9uKSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuICB9XG59XG4iXX0=