Il seguente esempio di codice mostra come rilevare le persone in un file video utilizzando l'API Video Intelligence.
Video Intelligence può rilevare la presenza di persone in un file video e monitorare le persone in un video o in un segmento di video.
Rilevamento di persone da un file in Cloud Storage
Di seguito viene mostrato come inviare una richiesta di annotazione a Video Intelligence con la funzionalità di rilevamento delle persone.
Inviare una richiesta di annotazione video
Di seguito è riportato un esempio di come inviare una richiesta POST al metodo
videos:annotate
. L'esempio utilizza Google Cloud CLI per creare un token di accesso. Per istruzioni sull'installazione di gcloud CLI, consulta la Guida rapida all'API Video Intelligence.
Vedi anche PersonDetectionConfig
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- INPUT_URI: un bucket Cloud Storage contenente
il file da annotare, incluso il nome del file. Deve
iniziare con
gs://
.
Ad esempio:
"inputUri": "gs://cloud-samples-data/video/googlework_short.mp4"
- PROJECT_NUMBER: l'identificatore numerico del tuo progetto Google Cloud
Metodo HTTP e URL:
POST https://videointelligence.googleapis.com/v1/videos:annotate
Corpo JSON della richiesta:
{ "inputUri": "INPUT_URI ", "features": ["PERSON_DETECTION"], "videoContext": { "personDetectionConfig": { "includeBoundingBoxes": true, "includePoseLandmarks": true, "includeAttributes": true } } }
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://videointelligence.googleapis.com/v1/videos:annotate"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://videointelligence.googleapis.com/v1/videos:annotate" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
Risposta
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID /operations/OPERATION_ID " }
Se la risposta è positiva, l'API Video Intelligence restituisce il name
per l'operazione. Di seguito è riportato un esempio di questa risposta, in cui:
- PROJECT_NUMBER: il numero del progetto
- LOCATION_ID: la regione Cloud in cui deve avvenire l'annotazione. Le regioni cloud supportate sono:
us-east1
,us-west1
,europe-west1
,asia-east1
. Se non viene specificata alcuna regione, verrà determinata una regione in base alla posizione del file video. - OPERATION_ID: l'ID dell'operazione a lunga esecuzione creata per la richiesta e fornito nella risposta quando hai avviato l'operazione, ad esempio
12345...
Recuperare i risultati delle annotazioni
Per recuperare il risultato dell'operazione, invia una richiesta GET utilizzando il nome dell'operazione restituito dalla chiamata a videos:annotate, come mostrato nell'esempio seguente.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- OPERATION_NAME: il nome dell'operazione come fornito dall'API Video Intelligence. Il nome dell'operazione ha il formato
projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID
- PROJECT_NUMBER: l'identificatore numerico del tuo progetto Google Cloud
Metodo HTTP e URL:
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
"https://videointelligence.googleapis.com/v1/OPERATION_NAME "
PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://videointelligence.googleapis.com/v1/OPERATION_NAME " | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
Risposta
{ "name": "us-west1.10001026834554604237", "metadata": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress", "annotationProgress": [ { "inputUri": "/cloud-ml-sandbox/video/chicago.mp4", "progressPercent": 100, "startTime": "2020-02-08T21:26:56.577807Z", "updateTime": "2020-02-08T21:28:09.620665Z" } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse", "annotationResults": [ { "inputUri": "/cloud-ml-sandbox/video/chicago.mp4", "personDetectionAnnotations": [ { "tracks": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "1.507436s" } }, ... ] } ] } ] } }
shotAnnotations
.
Nota: il campo done viene restituito solo se il relativo valore è True.
Non è incluso nelle risposte per le quali l'operazione non è stata completata.
Scaricare i risultati dell'annotazione
Copia l'annotazione dal bucket di origine a quello di destinazione: (vedi Copiare file e oggetti)
gcloud storage cp gcs_uri gs://my-bucket
Nota: se l'URI GCS di output viene fornito dall'utente, l'annotazione viene archiviata in quell'URI GCS.
Per autenticarti a Video Intelligence, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per autenticarti a Video Intelligence, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per autenticarti a Video Intelligence, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C#: segui le istruzioni di configurazione per C# nella pagina delle librerie client e poi consulta la documentazione di riferimento di Video Intelligence per .NET.
PHP: segui le istruzioni di configurazione di PHP riportate nella pagina delle librerie client e consulta la documentazione di riferimento di Video Intelligence per PHP.
Ruby: segui le istruzioni di configurazione di Ruby riportate nella pagina delle librerie client e consulta la documentazione di riferimento di Video Intelligence per Ruby.
Rilevamento di persone da un file locale
Il seguente esempio utilizza il rilevamento di persone per trovare entità in un video da un file video caricato dalla tua macchina locale.
Invia la richiesta di elaborazione
Per eseguire il rilevamento di persone su un file video locale, codifica i contenuti
del file video in Base64. Per informazioni su come codificare in base64 i contenuti di un
file video, vedi Codifica Base64. Poi, invia una richiesta POST al metodo
videos:annotate
. Includi i contenuti codificati in base64 nel inputContent
campo della richiesta e specifica la funzionalità PERSON_DETECTION
.
Di seguito è riportato un esempio di richiesta POST che utilizza curl. L'esempio utilizza Google Cloud CLI per creare un token di accesso. Per istruzioni su come installare gcloud CLI, consulta la guida rapida all'API Video Intelligence.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- inputContent: File video locale in formato binario
Ad esempio: "AAAAGGZ0eXBtcDQyAAAAAGlzb21tcDQyAAGVYW1vb3YAAABsbXZoZAAAAADWvhlR1r4ZUQABX5ABCOxo AAEAAAEAAAAAAA4..." - PROJECT_NUMBER: l'identificatore numerico del tuo progetto Google Cloud
Metodo HTTP e URL:
POST https://videointelligence.googleapis.com/v1/videos:annotate
Corpo JSON della richiesta:
{ "inputUri": "Local video file in binary format ", "features": ["PERSON_DETECTION"], "videoContext": { "personDetectionConfig": { "includeBoundingBoxes": true, "includePoseLandmarks": true, "includeAttributes": true } } }
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://videointelligence.googleapis.com/v1/videos:annotate"
PowerShell (Windows)
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://videointelligence.googleapis.com/v1/videos:annotate" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
Risposta
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID/var>/operations/OPERATION_ID" }
Se la richiesta va a buon fine, Video Intelligence genera il name
per la tua operazione. Il codice riportato sopra mostra un esempio di una risposta di questo tipo, in cui project-number
è il numero del progetto e operation-id
è l'ID dell'operazione a lungo termine creata per la richiesta.
{
"name": "us-west1.17122464255125931980"
}
Visualizza i risultati
Per recuperare il risultato dell'operazione, invia una richiesta GET all'endpoint
operations
e specifica il nome dell'operazione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- OPERATION_NAME: il nome dell'operazione come fornito dall'API Video Intelligence. Il nome dell'operazione ha il formato
projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID
- PROJECT_NUMBER: l'identificatore numerico del tuo progetto Google Cloud
Metodo HTTP e URL:
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
"https://videointelligence.googleapis.com/v1/OPERATION_NAME "
PowerShell (Windows)
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://videointelligence.googleapis.com/v1/OPERATION_NAME " | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
Risposta
{ "name": "us-west1.10001026834554604237", "metadata": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress", "annotationProgress": [ { "progressPercent": 100, "startTime": "2020-02-08T21:26:56.577807Z", "updateTime": "2020-02-08T21:28:09.620665Z" } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse", "annotationResults": [ { "personDetectionAnnotations": [ { "tracks": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "1.507436s" } }, ... ] } ] } ] } }
Per autenticarti a Video Intelligence, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per autenticarti a Video Intelligence, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per autenticarti a Video Intelligence, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C#: segui le istruzioni di configurazione per C# nella pagina delle librerie client e consulta la documentazione di riferimento di Video Intelligence per .NET.
PHP: segui le istruzioni di configurazione di PHP riportate nella pagina delle librerie client e consulta la documentazione di riferimento di Video Intelligence per PHP.
Ruby: segui le istruzioni di configurazione di Ruby nella pagina delle librerie client e poi consulta la documentazione di riferimento di Video Intelligence per Ruby.