Created
February 27, 2021 17:05
-
-
Save madilk/989df1d6c5dbbb62b8c1844966fd375c to your computer and use it in GitHub Desktop.
Google Cloud Video Intelligence API - Object Tracking Multiple Videos in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
os.environ['GOOGLE_APPLICATION_CREDENTIALS']='your-service-key.json' | |
"""Object tracking in a video stored on GCS.""" | |
from google.cloud import videointelligence | |
video_client = videointelligence.VideoIntelligenceServiceClient() | |
features = [videointelligence.enums.Feature.OBJECT_TRACKING] | |
gcs_uri = 'gs://video_intel3/*.*' | |
output_uri = 'gs://video_intel3/response-multiple-video-intelligence-single-request.json' | |
operation = video_client.annotate_video(input_uri=gcs_uri, features=features, output_uri=output_uri) | |
print("\nProcessing video for object annotations.") | |
result = operation.result(timeout=300) | |
print("\nFinished processing.\n") | |
# The first result is retrieved because a single video was processed. | |
object_annotations = result.annotation_results[0].object_annotations | |
for object_annotation in object_annotations: | |
print("Entity description: {}".format(object_annotation.entity.description)) | |
if object_annotation.entity.entity_id: | |
print("Entity id: {}".format(object_annotation.entity.entity_id)) | |
print( | |
"Segment: {}s to {}s".format( | |
object_annotation.segment.start_time_offset.seconds | |
+ object_annotation.segment.start_time_offset.nanos / 1e9, | |
object_annotation.segment.end_time_offset.seconds | |
+ object_annotation.segment.end_time_offset.nanos / 1e9, | |
) | |
) | |
print("Confidence: {}".format(object_annotation.confidence)) | |
# Here we print only the bounding box of the first frame in the segment | |
frame = object_annotation.frames[0] | |
box = frame.normalized_bounding_box | |
print( | |
"Time offset of the first frame: {}s".format( | |
frame.time_offset.seconds + frame.time_offset.nanos / 1e9 | |
) | |
) | |
print("Bounding box position:") | |
print("\tleft : {}".format(box.left)) | |
print("\ttop : {}".format(box.top)) | |
print("\tright : {}".format(box.right)) | |
print("\tbottom: {}".format(box.bottom)) | |
print("\n") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment