Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Nota
Avviso di fine del supporto: il 31 ottobre 2025, AWS interromperà il supporto per Amazon Rekognition People Pathing. Dopo il 31 ottobre 2025, non sarà più possibile utilizzare la funzionalità Rekognition People Pathing. Per ulteriori informazioni, consulta questo post del blog.
Video Amazon Rekognition è in grado di tracciare i movimenti delle persone nei video e fornire informazioni quali:
Posizione della persona nel fotogramma video al momento in cui viene tracciato il suo movimento.
Punti di riferimento del volto, ad esempio la posizione dell'occhio sinistro, quando rilevato.
Il rilevamento dei movimenti delle persone di Video Amazon Rekognition nei video archiviati è un'operazione asincrona. Per avviare il percorso delle persone durante le videochiamate StartPersonTracking. Amazon Rekognition per video pubblica lo stato di completamento dell'analisi video in un argomento Amazon Simple Notification Service. Se l'analisi video ha esito positivo, chiama GetPersonTrackingper ottenere i risultati dell'analisi video. Per ulteriori informazioni su come chiamare le operazioni API di Video Amazon Rekognition consultare Chiamata delle operazioni Video Amazon Rekognition.
La procedura seguente mostra come tracciare i movimenti delle persone attraverso un video archiviato in un bucket Amazon S3. L'esempio si espande nel codice in Analisi di un video archiviato in un bucket Amazon S3 con Java o Python (SDK), che utilizza una coda Amazon Simple Queue Service per ottenere lo stato di completamento di una richiesta di analisi video.
Per rilevare le persone in un video archiviato in un bucket Amazon S3 (SDK)
Eseguire Analisi di un video archiviato in un bucket Amazon S3 con Java o Python (SDK).
Aggiungere il seguente codice alla classe
VideoDetect
creata nella fase 1.//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.) //Persons======================================================================== private static void StartPersonDetection(String bucket, String video) throws Exception{ NotificationChannel channel= new NotificationChannel() .withSNSTopicArn(snsTopicArn) .withRoleArn(roleArn); StartPersonTrackingRequest req = new StartPersonTrackingRequest() .withVideo(new Video() .withS3Object(new S3Object() .withBucket(bucket) .withName(video))) .withNotificationChannel(channel); StartPersonTrackingResult startPersonDetectionResult = rek.startPersonTracking(req); startJobId=startPersonDetectionResult.getJobId(); } private static void GetPersonDetectionResults() throws Exception{ int maxResults=10; String paginationToken=null; GetPersonTrackingResult personTrackingResult=null; do{ if (personTrackingResult !=null){ paginationToken = personTrackingResult.getNextToken(); } personTrackingResult = rek.getPersonTracking(new GetPersonTrackingRequest() .withJobId(startJobId) .withNextToken(paginationToken) .withSortBy(PersonTrackingSortBy.TIMESTAMP) .withMaxResults(maxResults)); VideoMetadata videoMetaData=personTrackingResult.getVideoMetadata(); System.out.println("Format: " + videoMetaData.getFormat()); System.out.println("Codec: " + videoMetaData.getCodec()); System.out.println("Duration: " + videoMetaData.getDurationMillis()); System.out.println("FrameRate: " + videoMetaData.getFrameRate()); //Show persons, confidence and detection times List<PersonDetection> detectedPersons= personTrackingResult.getPersons(); for (PersonDetection detectedPerson: detectedPersons) { long seconds=detectedPerson.getTimestamp()/1000; System.out.print("Sec: " + Long.toString(seconds) + " "); System.out.println("Person Identifier: " + detectedPerson.getPerson().getIndex()); System.out.println(); } } while (personTrackingResult !=null && personTrackingResult.getNextToken() != null); }
Nella funzione
main
, sostituisci le righe:StartLabelDetection(amzn-s3-demo-bucket, video); if (GetSQSMessageSuccess()==true) GetLabelDetectionResults();
con:
StartPersonDetection(amzn-s3-demo-bucket, video); if (GetSQSMessageSuccess()==true) GetPersonDetectionResults();
Nota
Se hai già eseguito un video di esempio diverso da Analisi di un video archiviato in un bucket Amazon S3 con Java o Python (SDK), il codice da sostituire potrebbe essere diverso.
Eseguire il codice. Gli identificatori univoci per le persone localizzate vengono visualizzati insieme al tempo, in secondi, durante il quale i movimenti delle persone sono stati tracciati.
GetPersonTracking risposta all'operazione
GetPersonTracking
restituisce una matrice, Persons
, degli oggetti di PersonDetection contenenti dettagli sulle persone rilevate nel video e quando i loro movimenti vengono tracciati.
Puoi ordinare Persons
utilizzando il parametro di input SortBy
. Specifica TIMESTAMP
per ordinare gli elementi in base al momento in cui i movimenti delle persone vengono tracciati nel video. Specifica INDEX
per ordinare in base alle persone localizzate nel video. All'interno di ogni set di risultati per una persona, gli elementi vengono disposti in ordine di affidabilità decrescente riguardo alla precisione del rilevamento dei movimenti. Per default, la matrice Persons
restituita è ordinata in base al valore di TIMESTAMP
. Di seguito è riportato un esempio di risposta JSON dell'operazione GetPersonDetection
. I risultati sono ordinati in base al momento (in millisecondi) dall'inizio del video in cui i movimenti delle persone vengono tracciati nel video. Nella risposta, tenere presente quanto segue:
-
Informazioni sulla persona – L'elemento matrice
PersonDetection
contiene informazioni sulla persona rilevata. Ad esempio, il momento in cui la persona è stata rilevata (Timestamp
), la posizione della persona nel fotogramma video al momento in cui è stata rilevata (BoundingBox
) e il livello di affidabilità di Video Amazon Rekognition riguardo al corretto rilevamento della persona (Confidence
).Le caratteristiche del viso non vengono restituite per tutti i timestamp in corrispondenza dei quali il movimento della persona viene tracciato. Inoltre, se il corpo di una persona localizzata non è visibile, viene restituita solo la posizione del suo volto.
-
Informazioni di paginazione – L'esempio mostra una pagina di informazioni di rilevamento delle persone. Puoi specificare il numero di elementi della persona da restituire nel parametro di input
MaxResults
perGetPersonTracking
. Se esiste un numero di risultati maggiore diMaxResults
,GetPersonTracking
restituisce un token (NextToken
) utilizzato per ottenere la pagina di risultati successiva. Per ulteriori informazioni, consulta Ottenere i risultati dell'analisi di Video Amazon Rekognition. -
Indice – Un identificatore univoco per identificare la persona in tutto il video.
-
Informazioni video – La risposta include informazioni sul formato video (
VideoMetadata
) in ogni pagina di informazioni restituita daGetPersonDetection
.
{
"JobStatus": "SUCCEEDED",
"NextToken": "AcDymG0fSSoaI6+BBYpka5wVlqttysSPP8VvWcujMDluj1QpFo/vf+mrMoqBGk8eUEiFlllR6g==",
"Persons": [
{
"Person": {
"BoundingBox": {
"Height": 0.8787037134170532,
"Left": 0.00572916679084301,
"Top": 0.12129629403352737,
"Width": 0.21666666865348816
},
"Face": {
"BoundingBox": {
"Height": 0.20000000298023224,
"Left": 0.029999999329447746,
"Top": 0.2199999988079071,
"Width": 0.11249999701976776
},
"Confidence": 99.85971069335938,
"Landmarks": [
{
"Type": "eyeLeft",
"X": 0.06842322647571564,
"Y": 0.3010137975215912
},
{
"Type": "eyeRight",
"X": 0.10543643683195114,
"Y": 0.29697132110595703
},
{
"Type": "nose",
"X": 0.09569807350635529,
"Y": 0.33701086044311523
},
{
"Type": "mouthLeft",
"X": 0.0732642263174057,
"Y": 0.3757539987564087
},
{
"Type": "mouthRight",
"X": 0.10589495301246643,
"Y": 0.3722417950630188
}
],
"Pose": {
"Pitch": -0.5589138865470886,
"Roll": -5.1093974113464355,
"Yaw": 18.69594955444336
},
"Quality": {
"Brightness": 43.052337646484375,
"Sharpness": 99.68138885498047
}
},
"Index": 0
},
"Timestamp": 0
},
{
"Person": {
"BoundingBox": {
"Height": 0.9074074029922485,
"Left": 0.24791666865348816,
"Top": 0.09259258955717087,
"Width": 0.375
},
"Face": {
"BoundingBox": {
"Height": 0.23000000417232513,
"Left": 0.42500001192092896,
"Top": 0.16333332657814026,
"Width": 0.12937499582767487
},
"Confidence": 99.97504425048828,
"Landmarks": [
{
"Type": "eyeLeft",
"X": 0.46415066719055176,
"Y": 0.2572723925113678
},
{
"Type": "eyeRight",
"X": 0.5068183541297913,
"Y": 0.23705792427062988
},
{
"Type": "nose",
"X": 0.49765899777412415,
"Y": 0.28383663296699524
},
{
"Type": "mouthLeft",
"X": 0.487221896648407,
"Y": 0.3452930748462677
},
{
"Type": "mouthRight",
"X": 0.5142884850502014,
"Y": 0.33167609572410583
}
],
"Pose": {
"Pitch": 15.966927528381348,
"Roll": -15.547388076782227,
"Yaw": 11.34195613861084
},
"Quality": {
"Brightness": 44.80223083496094,
"Sharpness": 99.95819854736328
}
},
"Index": 1
},
"Timestamp": 0
}.....
],
"VideoMetadata": {
"Codec": "h264",
"DurationMillis": 67301,
"FileExtension": "mp4",
"Format": "QuickTime / MOV",
"FrameHeight": 1080,
"FrameRate": 29.970029830932617,
"FrameWidth": 1920
}
}