diff --git a/bin/Face_Recognition_Windows/run_face_encoder.ps1 b/bin/Face_Recognition_Windows/run_face_encoder.ps1 index 3dab9662..9cd9417a 100644 --- a/bin/Face_Recognition_Windows/run_face_encoder.ps1 +++ b/bin/Face_Recognition_Windows/run_face_encoder.ps1 @@ -7,10 +7,10 @@ Write-Host " 3 = 1/2 dei core (predefinito)" Write-Host " 4 = 3/4 dei core" Write-Host " 5 = n-2 core" Write-Host "" -$input = Read-Host "Inserisci il livello (1-5) oppure premi Invio per usare il predefinito (3)" +$multicoreChoice = Read-Host "Inserisci il livello (1-5) oppure premi Invio per usare il predefinito (3)" -if ($input -match '^[1-5]$') { - $multicore = [int]$input +if ($multicoreChoice -match '^[1-5]$') { + $multicore = [int]$multicoreChoice } else { $multicore = -1 } @@ -94,13 +94,33 @@ if (-not $inputPath) { exit 0 } +$inputFolder = Get-Item -LiteralPath $inputPath -ErrorAction Stop +$raceName = $inputFolder.Name +$safeRaceName = ($raceName -replace '[<>:"/\\|?*]', ' ').Trim() +$safeRaceName = $safeRaceName -replace '\s+', '_' +if (-not $safeRaceName) { + $safeRaceName = 'race' +} + +$timestamp = Get-Date -Format 'yyyyMMdd_HHmmss' +$encoderDir = Join-Path $PSScriptRoot "face_encoder_cpu" +$outputDir = Join-Path $encoderDir "output" +$outputFile = Join-Path $outputDir ("face_encodings_{0}_{1}.pkl" -f $timestamp, $safeRaceName) +$logFile = Join-Path $outputDir ("encoder_log_{0}_{1}.txt" -f $timestamp, $safeRaceName) + +New-Item -ItemType Directory -Path $outputDir -Force | Out-Null + # --- Build argument list --- -$encoderExe = Join-Path $PSScriptRoot "face_encoder_cpu\face_encoder_cpu.exe" +$encoderExe = Join-Path $encoderDir "face_encoder_cpu.exe" $encoderArgs = [System.Collections.Generic.List[string]]::new() $encoderArgs.Add("-i") -$encoderArgs.Add($inputPath) +$encoderArgs.Add($inputFolder.FullName) $encoderArgs.Add("-r") +$encoderArgs.Add("-o") +$encoderArgs.Add($outputFile) +$encoderArgs.Add("-l") +$encoderArgs.Add($logFile) if ($multicore -ge 0) { $encoderArgs.Add("-m") @@ -108,9 +128,22 @@ if ($multicore -ge 0) { } # --- Run encoder --- -Write-Host "Input folder : $inputPath" +Write-Host "Input folder : $($inputFolder.FullName)" +Write-Host "Race name : $raceName" Write-Host "Multicore : $(if ($multicore -ge 0) { $multicore } else { 'default (3)' })" +Write-Host "Output file : $outputFile" +Write-Host "Log file : $logFile" Write-Host "Command : $encoderExe $encoderArgs" Write-Host "" & $encoderExe @encoderArgs + +$encoderExitCode = $LASTEXITCODE + +if ($encoderExitCode -eq 0 -and (Test-Path -LiteralPath $outputFile)) { + Start-Process explorer.exe "/select,`"$outputFile`"" +} elseif ($encoderExitCode -eq 0) { + Write-Warning "Encoding completed, but the expected output file was not found: $outputFile" +} + +exit $encoderExitCode