Skip to content

Commit 9f6a844

Browse files
danoscarmikegguusswaprindpebotJon Wayne Parrott
authored
docs: add samples from video/cloud-client/labels (#49)
* Adds tutorials using Cloud Client [(#930)](#930) * Adds tutorials. * Removes unused enumerate * Adds new examples, replaces markdown with restructured text [(#945)](#945) * Adds new examples, replaces markdown with restructured text * Address review feedback * Use videos from pubilc bucket, update to new client library. * Style nit * Updates requirements [(#952)](#952) * Fix README rst links [(#962)](#962) * Fix README rst links * Update all READMEs * Auto-update dependencies. [(#1093)](#1093) * Auto-update dependencies. * Fix storage notification poll sample Change-Id: I6afbc79d15e050531555e4c8e51066996717a0f3 * Fix spanner samples Change-Id: I40069222c60d57e8f3d3878167591af9130895cb * Drop coverage because it's not useful Change-Id: Iae399a7083d7866c3c7b9162d0de244fbff8b522 * Try again to fix flaky logging test Change-Id: I6225c074701970c17c426677ef1935bb6d7e36b4 * Update all generated readme auth instructions [(#1121)](#1121) Change-Id: I03b5eaef8b17ac3dc3c0339fd2c7447bd3e11bd2 * Auto-update dependencies. [(#1123)](#1123) * Video v1beta2 [(#1088)](#1088) * update analyze_safe_search * update analyze_shots * update explicit_content_detection and test * update fece detection * update label detection (path) * update label detection (file) * flake * safe search --> explicit content * update faces tutorial * update client library quickstart * update shotchange tutorial * update labels tutorial * correct spelling * correction start_time_offset * import order * rebased * Added Link to Python Setup Guide [(#1158)](#1158) * Update Readme.rst to add Python setup guide As requested in b/64770713. This sample is linked in documentation https://cloud.google.com/bigtable/docs/scaling, and it would make more sense to update the guide here than in the documentation. * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update install_deps.tmpl.rst * Updated readmegen scripts and re-generated related README files * Fixed the lint error * Tweak doc/help strings for sample tools [(#1160)](#1160) * Corrected copy-paste on doc string * Updated doc/help string to be more specific to labels tool * Made shotchange doc/help string more specific * Tweaked doc/help string to indicate no arg expected * Adjusted import order to satisfy flake8 * Wrapped doc string to 79 chars to flake8 correctly * Adjusted import order to pass flake8 test * Auto-update dependencies. [(#1186)](#1186) * update samples to v1 [(#1221)](#1221) * update samples to v1 * replace while loop with operation.result(timeout) * addressing review comments * flake * flake * Added "Open in Cloud Shell" buttons to README files [(#1254)](#1254) * Auto-update dependencies. [(#1377)](#1377) * Auto-update dependencies. * Update requirements.txt * Auto-update dependencies. * Regenerate the README files and fix the Open in Cloud Shell link for some samples [(#1441)](#1441) * Update READMEs to fix numbering and add git clone [(#1464)](#1464) * Video Intelligence region tag update [(#1639)](#1639) * Auto-update dependencies. [(#1658)](#1658) * Auto-update dependencies. * Rollback appengine/standard/bigquery/. * Rollback appengine/standard/iap/. * Rollback bigtable/metricscaler. * Rolledback appengine/flexible/datastore. * Rollback dataproc/ * Rollback jobs/api_client * Rollback vision/cloud-client. * Rollback functions/ocr/app. * Rollback iot/api-client/end_to_end_example. * Rollback storage/cloud-client. * Rollback kms/api-client. * Rollback dlp/ * Rollback bigquery/cloud-client. * Rollback iot/api-client/manager. * Rollback appengine/flexible/cloudsql_postgresql. * Use explicit URIs for Video Intelligence sample tests [(#1743)](#1743) * Auto-update dependencies. [(#1846)](#1846) ACK, merging. * Auto-update dependencies. [(#1980)](#1980) * Auto-update dependencies. * Update requirements.txt * Update requirements.txt * replace demomaker with cloud-samples-data/video for video intelligenc… [(#2162)](#2162) * replace demomaker with cloud-samples-data/video for video intelligence samples * flake * Adds updates for samples profiler ... vision [(#2439)](#2439) * Auto-update dependencies. [(#2005)](#2005) * Auto-update dependencies. * Revert update of appengine/flexible/datastore. * revert update of appengine/flexible/scipy * revert update of bigquery/bqml * revert update of bigquery/cloud-client * revert update of bigquery/datalab-migration * revert update of bigtable/quickstart * revert update of compute/api * revert update of container_registry/container_analysis * revert update of dataflow/run_template * revert update of datastore/cloud-ndb * revert update of dialogflow/cloud-client * revert update of dlp * revert update of functions/imagemagick * revert update of functions/ocr/app * revert update of healthcare/api-client/fhir * revert update of iam/api-client * revert update of iot/api-client/gcs_file_to_device * revert update of iot/api-client/mqtt_example * revert update of language/automl * revert update of run/image-processing * revert update of vision/automl * revert update testing/requirements.txt * revert update of vision/cloud-client/detect * revert update of vision/cloud-client/product_search * revert update of jobs/v2/api_client * revert update of jobs/v3/api_client * revert update of opencensus * revert update of translate/cloud-client * revert update to speech/cloud-client Co-authored-by: Kurtis Van Gent <[email protected]> Co-authored-by: Doug Mahugh <[email protected]> * chore(deps): update dependency google-cloud-videointelligence to v1.14.0 [(#3169)](#3169) * Simplify noxfile setup. [(#2806)](#2806) * chore(deps): update dependency requests to v2.23.0 * Simplify noxfile and add version control. * Configure appengine/standard to only test Python 2.7. * Update Kokokro configs to match noxfile. * Add requirements-test to each folder. * Remove Py2 versions from everything execept appengine/standard. * Remove conftest.py. * Remove appengine/standard/conftest.py * Remove 'no-sucess-flaky-report' from pytest.ini. * Add GAE SDK back to appengine/standard tests. * Fix typo. * Roll pytest to python 2 version. * Add a bunch of testing requirements. * Remove typo. * Add appengine lib directory back in. * Add some additional requirements. * Fix issue with flake8 args. * Even more requirements. * Readd appengine conftest.py. * Add a few more requirements. * Even more Appengine requirements. * Add webtest for appengine/standard/mailgun. * Add some additional requirements. * Add workaround for issue with mailjet-rest. * Add responses for appengine/standard/mailjet. Co-authored-by: Renovate Bot <[email protected]> * fix: changes positional to named pararameters in Video samples [(#4017)](#4017) Changes calls to `VideoClient.annotate_video()` so that GCS URIs are provided as named parameters. Example: ``` operation = video_client.annotate_video(path, features=features) ``` Becomes: ``` operation = video_client.annotate_video(input_uri=path, features=features) ``` * Update dependency google-cloud-videointelligence to v1.15.0 [(#4041)](#4041) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [google-cloud-videointelligence](https://togithub.com/googleapis/python-videointelligence) | minor | `==1.14.0` -> `==1.15.0` | --- ### Release Notes <details> <summary>googleapis/python-videointelligence</summary> ### [`v1.15.0`](https://togithub.com/googleapis/python-videointelligence/blob/master/CHANGELOG.md#&#8203;1150-httpswwwgithubcomgoogleapispython-videointelligencecomparev1140v1150-2020-06-09) [Compare Source](https://togithub.com/googleapis/python-videointelligence/compare/v1.14.0...v1.15.0) ##### Features - add support for streaming automl action recognition in v1p3beta1; make 'features' a positional param for annotate_video in betas ([#&#8203;31](https://www.github.com/googleapis/python-videointelligence/issues/31)) ([586f920](https://www.github.com/googleapis/python-videointelligence/commit/586f920a1932e1a813adfed500502fba0ff5edb7)), closes [#&#8203;517](https://www.github.com/googleapis/python-videointelligence/issues/517) [#&#8203;538](https://www.github.com/googleapis/python-videointelligence/issues/538) [#&#8203;565](https://www.github.com/googleapis/python-videointelligence/issues/565) [#&#8203;576](https://www.github.com/googleapis/python-videointelligence/issues/576) [#&#8203;506](https://www.github.com/googleapis/python-videointelligence/issues/506) [#&#8203;586](https://www.github.com/googleapis/python-videointelligence/issues/586) [#&#8203;585](https://www.github.com/googleapis/python-videointelligence/issues/585) </details> --- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples). * chore(deps): update dependency pytest to v5.4.3 [(#4279)](#4279) * chore(deps): update dependency pytest to v5.4.3 * specify pytest for python 2 in appengine Co-authored-by: Leah Cole <[email protected]> * Update dependency pytest to v6 [(#4390)](#4390) * chore: adds samples templates * chore: temporarily pins sphinx * chore: fixes flaky detect_faces tests Co-authored-by: Gus Class <[email protected]> Co-authored-by: Bill Prin <[email protected]> Co-authored-by: DPE bot <[email protected]> Co-authored-by: Jon Wayne Parrott <[email protected]> Co-authored-by: Yu-Han Liu <[email protected]> Co-authored-by: michaelawyu <[email protected]> Co-authored-by: Perry Stoll <[email protected]> Co-authored-by: Frank Natividad <[email protected]> Co-authored-by: michaelawyu <[email protected]> Co-authored-by: Alix Hamilton <[email protected]> Co-authored-by: Yu-Han Liu <[email protected]> Co-authored-by: Kurtis Van Gent <[email protected]> Co-authored-by: Doug Mahugh <[email protected]> Co-authored-by: WhiteSource Renovate <[email protected]> Co-authored-by: Eric Schmidt <[email protected]> Co-authored-by: Leah Cole <[email protected]> Co-authored-by: gcf-merge-on-green[bot] <60162190+gcf-merge-on-green[bot]@users.noreply.github.com>
1 parent c588167 commit 9f6a844

File tree

7 files changed

+493
-0
lines changed

7 files changed

+493
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
2+
.. This file is automatically generated. Do not edit this file directly.
3+
4+
Google Cloud Video Intelligence API Python Samples
5+
===============================================================================
6+
7+
.. image:: https://gstatic.com/cloudssh/images/open-btn.png
8+
:target: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor=video/cloud-client/labels/README.rst
9+
10+
11+
This directory contains samples for Google Cloud Video Intelligence API. `Google Cloud Video Intelligence API`_ allows developers to easily integrate feature detection in video.
12+
13+
14+
15+
16+
.. _Google Cloud Video Intelligence API: https://cloud.google.com/video-intelligence/docs
17+
18+
19+
Setup
20+
-------------------------------------------------------------------------------
21+
22+
23+
24+
Authentication
25+
++++++++++++++
26+
27+
This sample requires you to have authentication setup. Refer to the
28+
`Authentication Getting Started Guide`_ for instructions on setting up
29+
credentials for applications.
30+
31+
.. _Authentication Getting Started Guide:
32+
https://cloud.google.com/docs/authentication/getting-started
33+
34+
35+
36+
37+
Install Dependencies
38+
++++++++++++++++++++
39+
40+
#. Clone python-docs-samples and change directory to the sample directory you want to use.
41+
42+
.. code-block:: bash
43+
44+
$ git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
45+
46+
#. Install `pip`_ and `virtualenv`_ if you do not already have them. You may want to refer to the `Python Development Environment Setup Guide`_ for Google Cloud Platform for instructions.
47+
48+
.. _Python Development Environment Setup Guide:
49+
https://cloud.google.com/python/setup
50+
51+
#. Create a virtualenv. Samples are compatible with Python 3.6+.
52+
53+
.. code-block:: bash
54+
55+
$ virtualenv env
56+
$ source env/bin/activate
57+
58+
#. Install the dependencies needed to run the samples.
59+
60+
.. code-block:: bash
61+
62+
$ pip install -r requirements.txt
63+
64+
.. _pip: https://pip.pypa.io/
65+
.. _virtualenv: https://virtualenv.pypa.io/
66+
67+
68+
69+
70+
71+
72+
Samples
73+
-------------------------------------------------------------------------------
74+
75+
76+
labels
77+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
78+
79+
.. image:: https://gstatic.com/cloudssh/images/open-btn.png
80+
:target: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor=video/cloud-client/labels/labels.py,video/cloud-client/labels/README.rst
81+
82+
83+
84+
85+
To run this sample:
86+
87+
.. code-block:: bash
88+
89+
$ python labels.py
90+
91+
92+
usage: labels.py [-h] path
93+
94+
This application demonstrates how to detect labels from a video
95+
based on the image content with the Google Cloud Video Intelligence
96+
API.
97+
98+
For more information, check out the documentation at
99+
https://cloud.google.com/videointelligence/docs.
100+
101+
Usage Example:
102+
103+
python labels.py gs://cloud-ml-sandbox/video/chicago.mp4
104+
105+
positional arguments:
106+
path GCS file path for label detection.
107+
108+
optional arguments:
109+
-h, --help show this help message and exit
110+
111+
112+
113+
114+
115+
116+
117+
118+
119+
The client library
120+
-------------------------------------------------------------------------------
121+
122+
This sample uses the `Google Cloud Client Library for Python`_.
123+
You can read the documentation for more details on API usage and use GitHub
124+
to `browse the source`_ and `report issues`_.
125+
126+
.. _Google Cloud Client Library for Python:
127+
https://googlecloudplatform.github.io/google-cloud-python/
128+
.. _browse the source:
129+
https://github.com/GoogleCloudPlatform/google-cloud-python
130+
.. _report issues:
131+
https://github.com/GoogleCloudPlatform/google-cloud-python/issues
132+
133+
134+
135+
.. _Google Cloud SDK: https://cloud.google.com/sdk/
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# This file is used to generate README.rst
2+
3+
product:
4+
name: Google Cloud Video Intelligence API
5+
short_name: Cloud Video Intelligence API
6+
url: https://cloud.google.com/video-intelligence/docs
7+
description: >
8+
`Google Cloud Video Intelligence API`_ allows developers to easily
9+
integrate feature detection in video.
10+
11+
setup:
12+
- auth
13+
- install_deps
14+
15+
samples:
16+
- name: labels
17+
file: labels.py
18+
show_help: True
19+
20+
cloud_client_library: true
21+
22+
folder: video/cloud-client/labels
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/usr/bin/env python
2+
3+
# Copyright 2017 Google Inc. All Rights Reserved.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
"""This application demonstrates how to detect labels from a video
18+
based on the image content with the Google Cloud Video Intelligence
19+
API.
20+
21+
For more information, check out the documentation at
22+
https://cloud.google.com/videointelligence/docs.
23+
24+
Usage Example:
25+
26+
python labels.py gs://cloud-ml-sandbox/video/chicago.mp4
27+
28+
"""
29+
30+
# [START video_label_tutorial]
31+
# [START video_label_tutorial_imports]
32+
import argparse
33+
34+
from google.cloud import videointelligence
35+
# [END video_label_tutorial_imports]
36+
37+
38+
def analyze_labels(path):
39+
""" Detects labels given a GCS path. """
40+
# [START video_label_tutorial_construct_request]
41+
video_client = videointelligence.VideoIntelligenceServiceClient()
42+
features = [videointelligence.enums.Feature.LABEL_DETECTION]
43+
operation = video_client.annotate_video(input_uri=path, features=features)
44+
# [END video_label_tutorial_construct_request]
45+
print('\nProcessing video for label annotations:')
46+
47+
# [START video_label_tutorial_check_operation]
48+
result = operation.result(timeout=90)
49+
print('\nFinished processing.')
50+
# [END video_label_tutorial_check_operation]
51+
52+
# [START video_label_tutorial_parse_response]
53+
segment_labels = result.annotation_results[0].segment_label_annotations
54+
for i, segment_label in enumerate(segment_labels):
55+
print('Video label description: {}'.format(
56+
segment_label.entity.description))
57+
for category_entity in segment_label.category_entities:
58+
print('\tLabel category description: {}'.format(
59+
category_entity.description))
60+
61+
for i, segment in enumerate(segment_label.segments):
62+
start_time = (segment.segment.start_time_offset.seconds +
63+
segment.segment.start_time_offset.nanos / 1e9)
64+
end_time = (segment.segment.end_time_offset.seconds +
65+
segment.segment.end_time_offset.nanos / 1e9)
66+
positions = '{}s to {}s'.format(start_time, end_time)
67+
confidence = segment.confidence
68+
print('\tSegment {}: {}'.format(i, positions))
69+
print('\tConfidence: {}'.format(confidence))
70+
print('\n')
71+
# [END video_label_tutorial_parse_response]
72+
73+
74+
if __name__ == '__main__':
75+
# [START video_label_tutorial_run_application]
76+
parser = argparse.ArgumentParser(
77+
description=__doc__,
78+
formatter_class=argparse.RawDescriptionHelpFormatter)
79+
parser.add_argument('path', help='GCS file path for label detection.')
80+
args = parser.parse_args()
81+
82+
analyze_labels(args.path)
83+
# [END video_label_tutorial_run_application]
84+
# [END video_label_tutorial]
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env python
2+
3+
# Copyright 2017 Google, Inc
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
import pytest
18+
19+
import labels
20+
21+
22+
@pytest.mark.slow
23+
def test_feline_video_labels(capsys):
24+
labels.analyze_labels('gs://cloud-samples-data/video/cat.mp4')
25+
out, _ = capsys.readouterr()
26+
assert 'Video label description: cat' in out

0 commit comments

Comments
 (0)