113 lines
2 KiB
Markdown
113 lines
2 KiB
Markdown
# Formato JSON di face_scan
|
|
|
|
`face_scan` scrive un singolo oggetto JSON su standard output.
|
|
|
|
Gli errori e i messaggi diagnostici vengono scritti su standard error.
|
|
|
|
## Invocazione
|
|
|
|
```bash
|
|
./bin/face_scan /percorso/immagine.jpg
|
|
```
|
|
|
|
## Esempio
|
|
|
|
```json
|
|
{
|
|
"image": {
|
|
"path": "/percorso/immagine.jpg",
|
|
"width": 1500,
|
|
"height": 2000
|
|
},
|
|
"faces": [
|
|
{
|
|
"face_index": 0,
|
|
"score": 0.8671875,
|
|
"bbox": {
|
|
"x": 1079.3457,
|
|
"y": 489.648438,
|
|
"width": 131.591797,
|
|
"height": 182.275391
|
|
},
|
|
"landmarks": [
|
|
[1107.8125, 558.325195],
|
|
[1170.99609, 559.423828],
|
|
[1134.17969, 594.500732],
|
|
[1106.22559, 615.83252],
|
|
[1168.34717, 616.967773]
|
|
],
|
|
"embedding": [
|
|
-0.0426222458,
|
|
0.0678814054
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
L'array `embedding` reale contiene sempre 128 valori.
|
|
|
|
## Oggetto image
|
|
|
|
Campi disponibili:
|
|
|
|
- `path`: percorso ricevuto dal programma;
|
|
- `width`: larghezza originale dell'immagine;
|
|
- `height`: altezza originale dell'immagine.
|
|
|
|
## Oggetto face
|
|
|
|
Campi disponibili:
|
|
|
|
- `face_index`: indice sequenziale del volto;
|
|
- `score`: confidence SCRFD;
|
|
- `bbox.x`: coordinata sinistra;
|
|
- `bbox.y`: coordinata superiore;
|
|
- `bbox.width`: larghezza;
|
|
- `bbox.height`: altezza;
|
|
- `landmarks`: cinque coppie di coordinate;
|
|
- `embedding`: vettore L2-normalizzato di 128 elementi.
|
|
|
|
## Immagini senza volti
|
|
|
|
Un'immagine elaborata correttamente ma senza volti produce:
|
|
|
|
```json
|
|
{
|
|
"image": {
|
|
"path": "image.jpg",
|
|
"width": 1920,
|
|
"height": 1080
|
|
},
|
|
"faces": []
|
|
}
|
|
```
|
|
|
|
L'exit code resta `0`.
|
|
|
|
## Exit code
|
|
|
|
```text
|
|
0 scansione completata
|
|
2 argomenti non validi
|
|
3 inizializzazione FaceEngine fallita
|
|
4 caricamento o elaborazione immagine fallita
|
|
5 risultato facciale o embedding non valido
|
|
```
|
|
|
|
## Requisiti dell'embedding
|
|
|
|
Per ogni volto:
|
|
|
|
```text
|
|
Dimensione 128
|
|
Tipo logico float32
|
|
Norma L2 circa 1.0
|
|
Valori tutti finiti
|
|
```
|
|
|
|
Quando viene salvato in formato binario float32:
|
|
|
|
```text
|
|
128 x 4 byte = 512 byte
|
|
```
|