Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
nota
Aviso de fin de soporte: el 31 de octubre de 2025, AWS dejará de ofrecer soporte para la característica Recorridos de las personas de Amazon Rekognition. Después del 31 de octubre de 2025, ya no podrá usar la característica Recorridos de las personas de Rekognition. Para obtener más información, visite esta publicación del blog
Amazon Rekognition Video puede hacer un seguimiento del recorrido que siguen las personas en los vídeos y proporcionar información como:
La ubicación de las personas en un fotograma de vídeo en el momento en que se realiza el seguimiento de su recorrido.
Referencias faciales como, por ejemplo, la posición del ojo izquierdo, cuando se detectaron.
El recorrido de las personas de Amazon Rekognition Video en vídeos almacenados es una operación asíncrona. Para iniciar la ruta de las personas en las StartPersonTrackingvideollamadas. Amazon Rekognition Video publica el estado de finalización de una operación de análisis de vídeo en un tema de Amazon Simple Notification Service. Si el análisis de vídeo es exitoso, llame GetPersonTrackingpara obtener los resultados del análisis de vídeo. Para obtener más información sobre cómo llamar a las operaciones de la API de Amazon Rekognition Video consulte Cómo llamar a las operaciones de Amazon Rekognition Video.
El siguiente procedimiento muestra cómo realizar un seguimiento del recorrido de las personas en un vídeo almacenado en un bucket de Amazon S3. El ejemplo amplía el código en Análisis de un vídeo almacenado en un bucket de Amazon S3 con Java o Python (SDK) que utiliza una cola de Amazon Simple Queue Service para obtener el estado de realización de una solicitud de análisis de vídeo.
Para detectar personas en un vídeo almacenado en un bucket de Amazon S3 (SDK)
Realice Análisis de un vídeo almacenado en un bucket de Amazon S3 con Java o Python (SDK).
Añada el código siguiente a la clase
VideoDetect
que ha creado en el paso 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); }
En la función
main
, reemplace las líneas:StartLabelDetection(amzn-s3-demo-bucket, video); if (GetSQSMessageSuccess()==true) GetLabelDetectionResults();
por:
StartPersonDetection(amzn-s3-demo-bucket, video); if (GetSQSMessageSuccess()==true) GetPersonDetectionResults();
nota
Si ya ha ejecutado un ejemplo de vídeo distinto de Análisis de un vídeo almacenado en un bucket de Amazon S3 con Java o Python (SDK), el código que se va a reemplazar podría ser diferente.
Ejecute el código. Los identificadores únicos de las personas de las que se realiza un seguimiento se muestran junto con el tiempo, en segundos, en que se realizó el seguimiento de las personas.
GetPersonTracking respuesta de operación
GetPersonTracking
devuelve una matriz, Persons
, de objetos PersonDetection que contienen detalles acerca de las personas detectadas en el video y cuándo se ha hecho seguimiento de sus recorridos.
Puede ordenar Persons
utilizando el parámetro de entrada SortBy
. Especifique TIMESTAMP
para ordenar los elementos según la hora de seguimiento del recorrido de las personas en el vídeo. Especifique INDEX
para ordenar por personas de las que se hace seguimiento en el vídeo. Dentro de cada conjunto de resultados para una persona, los elementos se ordenan por confianza en sentido descendente según la precisión del seguimiento del recorrido. De forma predeterminada, Persons
se devuelve ordenado por TIMESTAMP
. El siguiente ejemplo es la respuesta JSON de GetPersonDetection
. Los resultados se ordenan por tiempo, en milisegundos desde el inicio del vídeo, durante el que se realiza un seguimiento de los recorridos de las personas en el vídeo. En la respuesta, tenga en cuenta lo siguiente:
-
Información de persona: el elemento de matriz
PersonDetection
contiene información acerca de la persona detectada. Por ejemplo, la hora a la que se detectó la persona (Timestamp
), la posición de la persona en el fotograma de vídeo en el momento en que se detectó (BoundingBox
) y la confianza que tiene Amazon Rekognition Video de que la persona se ha detectado correctamente (Confidence
).Los rasgos faciales no se devuelven en cada marca temporal en la que se realiza el seguimiento del recorrido de la persona. Además, en algunos casos, el cuerpo de la persona a la que se hace seguimiento podría no ser visible, en cuyo caso solo se devuelve la ubicación del rostro.
-
Información de paginación: el ejemplo muestra una página de información de detección de persona. Puede especificar la cantidad de elementos de persona que se van a devolver en el parámetro de entrada
MaxResults
paraGetPersonTracking
. Si existen más resultados queMaxResults
,GetPersonTracking
devuelve un token (NextToken
) que se utiliza para obtener la siguiente página de resultados. Para obtener más información, consulte Obtención de los resultados del análisis de Amazon Rekognition Video. -
Índice: un identificador único para identificar la persona a lo largo del vídeo.
-
Información de vídeo: la respuesta incluye información acerca del formato de vídeo (
VideoMetadata
) en cada página de información devuelta porGetPersonDetection
.
{
"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
}
}