Skip to content

Commit

Permalink
Adds one more tutorial as well as fixes some copy/paste typos. (#933)
Browse files Browse the repository at this point in the history
  • Loading branch information
gguuss authored and Jon Wayne Parrott committed May 5, 2017
1 parent 1fde844 commit ef8db57
Show file tree
Hide file tree
Showing 6 changed files with 145 additions and 2 deletions.
29 changes: 29 additions & 0 deletions video/cloud-client/faces/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Google Cloud Video Intelligence

Demonstrates face detection using the Google Cloud Video Intelligence API.

## Setup
Please follow the [Set Up Your Project](https://cloud.google.com/video-intelligence/docs/getting-started#set_up_your_project)
steps in the Quickstart doc to create a project and enable the Google Cloud
Video Intelligence API. Following those steps, make sure that you
[Set Up a Service Account](https://cloud.google.com/video-intelligence/docs/common/auth#set_up_a_service_account),
and export the following environment variable:

```
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your-project-credentials.json
```

## Run the sample

Install [pip](https://pip.pypa.io/en/stable/installing) if not already installed.

Install the necessary libraries using pip:

```sh
$ pip install -r requirements.txt
```

Run the sample, for example:
```
python faces.py gs://cloudmleap/video/googlework.mp4
```
81 changes: 81 additions & 0 deletions video/cloud-client/faces/faces.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#!/usr/bin/env python

# Copyright 2017 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""This application demonstrates how to perform shot change detection with the
Google Cloud Video Intelligence API.
For more information, check out the documentation at
https://cloud.google.com/videointelligence/docs.
"""

# [START full_tutorial]
# [START imports]
import argparse
import sys
import time

from google.cloud.gapic.videointelligence.v1beta1 import enums
from google.cloud.gapic.videointelligence.v1beta1 import (
video_intelligence_service_client)
# [END imports]


def analyze_faces(path):
# [START construct_request]
""" Detects faces given a GCS path. """
video_client = (video_intelligence_service_client.
VideoIntelligenceServiceClient())
features = [enums.Feature.FACE_DETECTION]
operation = video_client.annotate_video(path, features)
# [END construct_request]
print('\nProcessing video for face annotations:')

# [START check_operation]
while not operation.done():
sys.stdout.write('.')
sys.stdout.flush()
time.sleep(20)

print('\nFinished processing.')
# [END check_operation]

# [START parse_response]
# first result is retrieved because a single video was processed
face_annotations = (operation.result().annotation_results[0].
face_annotations)

for face_id, face in enumerate(face_annotations):
print('Thumbnail size: {}'.format(len(face.thumbnail)))

for segment_id, segment in enumerate(face.segments):
print('Track {}: {} to {}'.format(
segment_id,
segment.start_time_offset,
segment.end_time_offset))
# [END parse_response]


if __name__ == '__main__':
# [START running_app]
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('path', help='GCS file path for face detection.')
args = parser.parse_args()

analyze_faces(args.path)
# [END running_app]
# [END full_tutorial]
32 changes: 32 additions & 0 deletions video/cloud-client/faces/faces_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env python

# Copyright 2017 Google, Inc
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os

import pytest

import faces

BUCKET = os.environ['CLOUD_STORAGE_BUCKET']
FACES_FILE_PATH = '/video/googlework.mp4'


@pytest.mark.slow
def test_work_video_faces(capsys):
faces.analyze_faces(
'gs://{}{}'.format(BUCKET, FACES_FILE_PATH))
out, _ = capsys.readouterr()
assert 'Thumbnail' in out
1 change: 1 addition & 0 deletions video/cloud-client/faces/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://storage.googleapis.com/videointelligence-alpha/videointelligence-python.zip
2 changes: 1 addition & 1 deletion video/cloud-client/shotchange/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Google Cloud Video Intelligence

Demonstrates label detection using the Google Cloud Video Intelligence API.
Demonstrates shot change detection using the Google Cloud Video Intelligence API.

## Setup
Please follow the [Set Up Your Project](https://cloud.google.com/video-intelligence/docs/getting-started#set_up_your_project)
Expand Down
2 changes: 1 addition & 1 deletion video/cloud-client/shotchange/shotchange.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def analyze_shots(path):
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('path', help='GCS file path for label detection.')
parser.add_argument('path', help='GCS path for shot change detection.')
args = parser.parse_args()

analyze_shots(args.path)
Expand Down

0 comments on commit ef8db57

Please sign in to comment.