UNPKG

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.

83 lines 6.79 kB
/** * @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'; export class FaceDetectorService { /** * @param {?} modelLoader * @param {?=} option */ constructor(modelLoader, option) { this.modelLoader = modelLoader; this.option = option; } /** * @param {?} task * @return {?} */ detect(task) { if (task.realtime === true) { return of(task).pipe(switchMap((/** * @param {?} t * @return {?} */ (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield t.target; }))), switchMap((/** * @param {?} video * @return {?} */ video => fromEvent(video, 'loadeddata'))), switchMap((/** * @return {?} */ () => this.modelLoader.loadForFeature(task.tokens))), switchMap((/** * @return {?} */ () => interval(300))), switchMap((/** * @return {?} */ () => task.detect(this.option))), shareReplay(1)); } return of(task).pipe(switchMap((/** * @param {?} t * @return {?} */ (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield t.target; }))), switchMap((/** * @param {?} image * @return {?} */ image => fromEvent(image, 'load'))), switchMap((/** * @return {?} */ () => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield this.modelLoader.loadForFeature(task.tokens); }))), switchMap((/** * @return {?} */ () => task.detect(this.option))), shareReplay(1)); } } FaceDetectorService.decorators = [ { type: Injectable } ]; /** @nocollapse */ FaceDetectorService.ctorParameters = () => [ { type: ModelLoaderService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FaceDetectionOptions,] }] } ]; if (false) { /** * @type {?} * @private */ FaceDetectorService.prototype.modelLoader; /** * @type {?} * @private */ FaceDetectorService.prototype.option; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZS1kZXRlY3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWZhY2UtYXBpLWpzLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2ZhY2UtZGV0ZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEtBQUssT0FBTyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd0RSxNQUFNLE9BQU8sbUJBQW1COzs7OztJQUM5QixZQUNVLFdBQStCLEVBRy9CLE1BQXFDO1FBSHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUcvQixXQUFNLEdBQU4sTUFBTSxDQUErQjtJQUM1QyxDQUFDOzs7OztJQUVHLE1BQU0sQ0FBQyxJQUFnQjtRQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzFCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbEIsU0FBUzs7OztZQUFDLENBQU0sQ0FBQyxFQUFDLEVBQUUsd0RBQUMsT0FBQSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUEsR0FBQSxFQUFDLEVBQ3BDLFNBQVM7Ozs7WUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUMsRUFDbEQsU0FBUzs7O1lBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLEVBQzdELFNBQVM7OztZQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQyxFQUM5QixTQUFTOzs7WUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxFQUN6QyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztTQUNIO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQixTQUFTOzs7O1FBQUMsQ0FBTSxDQUFDLEVBQUMsRUFBRSx3REFBQyxPQUFBLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQSxHQUFBLEVBQUMsRUFDcEMsU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBQyxFQUM1QyxTQUFTOzs7UUFBQyxHQUFTLEVBQUUsd0RBQUMsT0FBQSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxHQUFBLEVBQUMsRUFDekUsU0FBUzs7O1FBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsRUFDekMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDSixDQUFDOzs7WUEzQkYsVUFBVTs7OztZQUpGLGtCQUFrQjs0Q0FRdEIsUUFBUSxZQUNSLE1BQU0sU0FBQyxvQkFBb0I7Ozs7Ozs7SUFGNUIsMENBQXVDOzs7OztJQUN2QyxxQ0FFNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBmYWNlYXBpIGZyb20gJ2ZhY2UtYXBpLmpzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBmcm9tRXZlbnQsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNb2RlbExvYWRlclNlcnZpY2UgfSBmcm9tICcuL21vZGVsLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IERldGVjdFRhc2sgfSBmcm9tICcuLi9jbGFzc2VzL0RldGVjdFRhc2snO1xuaW1wb3J0IHsgRmFjZURldGVjdGlvbk9wdGlvbnMgfSBmcm9tICcuLi90b2tlbnMvRmFjZURldGVjdGlvbk9wdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmFjZURldGVjdG9yU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kZWxMb2FkZXI6IE1vZGVsTG9hZGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRmFjZURldGVjdGlvbk9wdGlvbnMpXG4gICAgcHJpdmF0ZSBvcHRpb24/OiBmYWNlYXBpLkZhY2VEZXRlY3Rpb25PcHRpb25zLFxuICApIHt9XG5cbiAgcHVibGljIGRldGVjdCh0YXNrOiBEZXRlY3RUYXNrKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGFzay5yZWFsdGltZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIG9mKHRhc2spLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhc3luYyB0ID0+IGF3YWl0IHQudGFyZ2V0KSxcbiAgICAgICAgc3dpdGNoTWFwKHZpZGVvID0+IGZyb21FdmVudCh2aWRlbywgJ2xvYWRlZGRhdGEnKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLm1vZGVsTG9hZGVyLmxvYWRGb3JGZWF0dXJlKHRhc2sudG9rZW5zKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBpbnRlcnZhbCgzMDApKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRhc2suZGV0ZWN0KHRoaXMub3B0aW9uKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKHRhc2spLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgdCA9PiBhd2FpdCB0LnRhcmdldCksXG4gICAgICBzd2l0Y2hNYXAoaW1hZ2UgPT4gZnJvbUV2ZW50KGltYWdlLCAnbG9hZCcpKSxcbiAgICAgIHN3aXRjaE1hcChhc3luYyAoKSA9PiBhd2FpdCB0aGlzLm1vZGVsTG9hZGVyLmxvYWRGb3JGZWF0dXJlKHRhc2sudG9rZW5zKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGFzay5kZXRlY3QodGhpcy5vcHRpb24pKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==