|
|
@@ -9,6 +9,9 @@ import * as faceapi from 'face-api.js';
|
|
|
import { EnrollDialogComponent } from '../components/enroll-dialog/enroll-dialog.component';
|
|
|
import { FaceScanResult, FaceService } from './face.service';
|
|
|
import { EmployeeDialogComponent } from '../components/employee-dialog/employee-dialog.component';
|
|
|
+import { MatFormFieldModule } from '@angular/material/form-field';
|
|
|
+import { MatSelectModule } from '@angular/material/select';
|
|
|
+import { MatOptionModule } from '@angular/material/core';
|
|
|
|
|
|
interface TrackedFace {
|
|
|
box: faceapi.Box;
|
|
|
@@ -22,9 +25,9 @@ interface RecognizedProfile {
|
|
|
name: string;
|
|
|
confidence: number;
|
|
|
color: string;
|
|
|
- photoUrl?: string; // <-- use server photo
|
|
|
+ photoUrl?: string;
|
|
|
+ modelName?: string; // <-- add this
|
|
|
}
|
|
|
-
|
|
|
@Component({
|
|
|
selector: 'app-webcam',
|
|
|
standalone: true,
|
|
|
@@ -33,7 +36,10 @@ interface RecognizedProfile {
|
|
|
MatButtonModule,
|
|
|
MatCardModule,
|
|
|
MatSnackBarModule,
|
|
|
- MatDialogModule
|
|
|
+ MatDialogModule,
|
|
|
+ MatFormFieldModule,
|
|
|
+ MatSelectModule,
|
|
|
+ MatOptionModule
|
|
|
],
|
|
|
templateUrl: './webcam.component.html',
|
|
|
styleUrls: ['./webcam.component.css']
|
|
|
@@ -48,6 +54,7 @@ export class WebcamComponent implements AfterViewInit, OnDestroy {
|
|
|
private recognitionCooldown = 5000; // 5 seconds cooldown per face
|
|
|
|
|
|
recognizedProfiles: RecognizedProfile[] = [];
|
|
|
+ public selectedModel: 'VGG-Face' | 'Facenet' | 'OpenFace' = 'VGG-Face';
|
|
|
|
|
|
constructor(
|
|
|
private faceService: FaceService,
|
|
|
@@ -165,7 +172,7 @@ export class WebcamComponent implements AfterViewInit, OnDestroy {
|
|
|
|
|
|
const base64Image = face.imageBase64.split(',')[1];
|
|
|
|
|
|
- this.faceService.scanFace(base64Image).subscribe({
|
|
|
+ this.faceService.scanFace(base64Image, this.selectedModel).subscribe({
|
|
|
next: (res: FaceScanResult) => {
|
|
|
const color = res.name === 'Unknown' ? '#fde0e0' : '#e0f7e9';
|
|
|
|
|
|
@@ -175,7 +182,8 @@ export class WebcamComponent implements AfterViewInit, OnDestroy {
|
|
|
name: res.name,
|
|
|
confidence: res.confidence,
|
|
|
color,
|
|
|
- photoUrl: res.photoUrl // use server image
|
|
|
+ photoUrl: res.photoUrl, // use server image
|
|
|
+ modelName: this.selectedModel
|
|
|
});
|
|
|
}
|
|
|
|