<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="vision_v1.html">Cloud Vision API</a> . <a href="vision_v1.images.html">images</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#annotate">annotate(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Run image detection and annotation for a batch of images.</p>
<p class="toc_element">
  <code><a href="#asyncBatchAnnotate">asyncBatchAnnotate(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Run asynchronous image detection and annotation for a list of images. Progress and results can be retrieved through the `google.longrunning.Operations` interface. `Operation.metadata` contains `OperationMetadata` (metadata). `Operation.response` contains `AsyncBatchAnnotateImagesResponse` (results). This service will write image annotation outputs to json files in customer GCS bucket, each json file containing BatchAnnotateImagesResponse proto.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="annotate">annotate(body=None, x__xgafv=None)</code>
  <pre>Run image detection and annotation for a batch of images.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Multiple image annotation requests are batched into a single service call.
    &quot;requests&quot;: [ # Required. Individual image annotation requests for this batch.
      { # Request for performing Google Cloud Vision API tasks over a user-provided image, with user-requested features, and with context information.
        &quot;features&quot;: [ # Requested features.
          { # The type of Google Cloud Vision API detection to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list.
            &quot;type&quot;: &quot;A String&quot;, # The feature type.
            &quot;model&quot;: &quot;A String&quot;, # Model to use for the feature. Supported values: &quot;builtin/stable&quot; (the default if unset) and &quot;builtin/latest&quot;.
            &quot;maxResults&quot;: 42, # Maximum number of results of this type. Does not apply to `TEXT_DETECTION`, `DOCUMENT_TEXT_DETECTION`, or `CROP_HINTS`.
          },
        ],
        &quot;image&quot;: { # Client image to perform Google Cloud Vision API tasks over. # The image to be processed.
          &quot;source&quot;: { # External image source (Google Cloud Storage or web URL image location). # Google Cloud Storage image location, or publicly-accessible image URL. If both `content` and `source` are provided for an image, `content` takes precedence and is used to perform the image annotation request.
            &quot;gcsImageUri&quot;: &quot;A String&quot;, # **Use `image_uri` instead.** The Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. See [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris) for more info.
            &quot;imageUri&quot;: &quot;A String&quot;, # The URI of the source image. Can be either: 1. A Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. See [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris) for more info. 2. A publicly-accessible image HTTP/HTTPS URL. When fetching images from HTTP/HTTPS URLs, Google cannot guarantee that the request will be completed. Your request may fail if the specified host denies the request (e.g. due to request throttling or DOS prevention), or if Google throttles requests to the site for abuse prevention. You should not depend on externally-hosted images for production applications. When both `gcs_image_uri` and `image_uri` are specified, `image_uri` takes precedence.
          },
          &quot;content&quot;: &quot;A String&quot;, # Image content, represented as a stream of bytes. Note: As with all `bytes` fields, protobuffers use a pure binary representation, whereas JSON representations use base64. Currently, this field only works for BatchAnnotateImages requests. It does not work for AsyncBatchAnnotateImages requests.
        },
        &quot;imageContext&quot;: { # Image context and/or feature-specific parameters. # Additional context that may accompany the image.
          &quot;cropHintsParams&quot;: { # Parameters for crop hints annotation request. # Parameters for crop hints annotation request.
            &quot;aspectRatios&quot;: [ # Aspect ratios in floats, representing the ratio of the width to the height of the image. For example, if the desired aspect ratio is 4/3, the corresponding float value should be 1.33333. If not specified, the best possible crop is returned. The number of provided aspect ratios is limited to a maximum of 16; any aspect ratios provided after the 16th are ignored.
              3.14,
            ],
          },
          &quot;latLongRect&quot;: { # Rectangle determined by min and max `LatLng` pairs. # Not used.
            &quot;maxLatLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Max lat/long pair.
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;minLatLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Min lat/long pair.
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
          },
          &quot;webDetectionParams&quot;: { # Parameters for web detection request. # Parameters for web detection.
            &quot;includeGeoResults&quot;: True or False, # Whether to include results derived from the geo information in the image.
          },
          &quot;productSearchParams&quot;: { # Parameters for a product search request. # Parameters for product search.
            &quot;productSet&quot;: &quot;A String&quot;, # The resource name of a ProductSet to be searched for similar images. Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`.
            &quot;productCategories&quot;: [ # The list of product categories to search in. Currently, we only consider the first category, and either &quot;homegoods-v2&quot;, &quot;apparel-v2&quot;, &quot;toys-v2&quot;, &quot;packagedgoods-v1&quot;, or &quot;general-v1&quot; should be specified. The legacy categories &quot;homegoods&quot;, &quot;apparel&quot;, and &quot;toys&quot; are still supported but will be deprecated. For new products, please use &quot;homegoods-v2&quot;, &quot;apparel-v2&quot;, or &quot;toys-v2&quot; for better product search accuracy. It is recommended to migrate existing products to these categories as well.
              &quot;A String&quot;,
            ],
            &quot;filter&quot;: &quot;A String&quot;, # The filtering expression. This can be used to restrict search results based on Product labels. We currently support an AND of OR of key-value expressions, where each expression within an OR must have the same key. An &#x27;=&#x27; should be used to connect the key and value. For example, &quot;(color = red OR color = blue) AND brand = Google&quot; is acceptable, but &quot;(color = red OR brand = Google)&quot; is not acceptable. &quot;color: red&quot; is not acceptable because it uses a &#x27;:&#x27; instead of an &#x27;=&#x27;.
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon around the area of interest in the image. If it is not specified, system discretion will be applied.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
          },
          &quot;languageHints&quot;: [ # List of languages to use for TEXT_DETECTION. In most cases, an empty value yields the best results since it enables automatic language detection. For languages based on the Latin alphabet, setting `language_hints` is not needed. In rare cases, when the language of the text in the image is known, setting a hint will help get better results (although it will be a significant hindrance if the hint is wrong). Text detection returns an error if one or more of the specified languages is not one of the [supported languages](https://cloud.google.com/vision/docs/languages).
            &quot;A String&quot;,
          ],
        },
      },
    ],
    &quot;parent&quot;: &quot;A String&quot;, # Optional. Target project and location to make a call. Format: `projects/{project-id}/locations/{location-id}`. If no parent is specified, a region will be chosen automatically. Supported location-ids: `us`: USA country only, `asia`: East asia areas, like Japan, Taiwan, `eu`: The European Union. Example: `projects/project-A/locations/eu`.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to a batch image annotation request.
    &quot;responses&quot;: [ # Individual responses to image annotation requests within the batch.
      { # Response to an image annotation request.
        &quot;faceAnnotations&quot;: [ # If present, face detection has completed successfully.
          { # A face annotation object contains the results of face detection.
            &quot;detectionConfidence&quot;: 3.14, # Detection confidence. Range [0, 1].
            &quot;joyLikelihood&quot;: &quot;A String&quot;, # Joy likelihood.
            &quot;headwearLikelihood&quot;: &quot;A String&quot;, # Headwear likelihood.
            &quot;rollAngle&quot;: 3.14, # Roll angle, which indicates the amount of clockwise/anti-clockwise rotation of the face relative to the image vertical about the axis perpendicular to the face. Range [-180,180].
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon around the face. The coordinates of the bounding box are in the original image&#x27;s scale. The bounding box is computed to &quot;frame&quot; the face in accordance with human expectations. It is based on the landmarker results. Note that one or more x and/or y coordinates may not be generated in the `BoundingPoly` (the polygon will be unbounded) if only a partial face appears in the image to be annotated.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
            &quot;tiltAngle&quot;: 3.14, # Pitch angle, which indicates the upwards/downwards angle that the face is pointing relative to the image&#x27;s horizontal plane. Range [-180,180].
            &quot;landmarks&quot;: [ # Detected face landmarks.
              { # A face-specific landmark (for example, a face feature).
                &quot;position&quot;: { # A 3D position in the image, used primarily for Face detection landmarks. A valid Position must have both x and y coordinates. The position coordinates are in the same scale as the original image. # Face landmark position.
                  &quot;z&quot;: 3.14, # Z coordinate (or depth).
                  &quot;x&quot;: 3.14, # X coordinate.
                  &quot;y&quot;: 3.14, # Y coordinate.
                },
                &quot;type&quot;: &quot;A String&quot;, # Face landmark type.
              },
            ],
            &quot;blurredLikelihood&quot;: &quot;A String&quot;, # Blurred likelihood.
            &quot;sorrowLikelihood&quot;: &quot;A String&quot;, # Sorrow likelihood.
            &quot;angerLikelihood&quot;: &quot;A String&quot;, # Anger likelihood.
            &quot;surpriseLikelihood&quot;: &quot;A String&quot;, # Surprise likelihood.
            &quot;panAngle&quot;: 3.14, # Yaw angle, which indicates the leftward/rightward angle that the face is pointing relative to the vertical plane perpendicular to the image. Range [-180,180].
            &quot;landmarkingConfidence&quot;: 3.14, # Face landmarking confidence. Range [0, 1].
            &quot;fdBoundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The `fd_bounding_poly` bounding polygon is tighter than the `boundingPoly`, and encloses only the skin part of the face. Typically, it is used to eliminate the face from any image analysis that detects the &quot;amount of skin&quot; visible in an image. It is not based on the landmarker results, only on the initial face detection, hence the fd (face detection) prefix.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
            &quot;underExposedLikelihood&quot;: &quot;A String&quot;, # Under-exposed likelihood.
          },
        ],
        &quot;fullTextAnnotation&quot;: { # TextAnnotation contains a structured representation of OCR extracted text. The hierarchy of an OCR extracted text structure is like this: TextAnnotation -&gt; Page -&gt; Block -&gt; Paragraph -&gt; Word -&gt; Symbol Each structural component, starting from Page, may further have their own properties. Properties describe detected languages, breaks etc.. Please refer to the TextAnnotation.TextProperty message definition below for more detail. # If present, text (OCR) detection or document (OCR) text detection has completed successfully. This annotation provides the structural hierarchy for the OCR detected text.
          &quot;pages&quot;: [ # List of pages detected by OCR.
            { # Detected page from OCR.
              &quot;width&quot;: 42, # Page width. For PDFs the unit is points. For images (including TIFFs) the unit is pixels.
              &quot;confidence&quot;: 3.14, # Confidence of the OCR results on the page. Range [0, 1].
              &quot;height&quot;: 42, # Page height. For PDFs the unit is points. For images (including TIFFs) the unit is pixels.
              &quot;property&quot;: { # Additional information detected on the structural component. # Additional information detected on the page.
                &quot;detectedBreak&quot;: { # Detected start or end of a structural component. # Detected start or end of a text segment.
                  &quot;isPrefix&quot;: True or False, # True if break prepends the element.
                  &quot;type&quot;: &quot;A String&quot;, # Detected break type.
                },
                &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
                  { # Detected language for a structural component.
                    &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                    &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                  },
                ],
              },
              &quot;blocks&quot;: [ # List of blocks of text, images etc on this page.
                { # Logical element on the page.
                  &quot;paragraphs&quot;: [ # List of paragraphs in this block (if this blocks is of type text).
                    { # Structural unit of text representing a number of words in certain order.
                      &quot;boundingBox&quot;: { # A bounding polygon for the detected image annotation. # The bounding box for the paragraph. The vertices are in the order of top-left, top-right, bottom-right, bottom-left. When a rotation of the bounding box is detected the rotation is represented as around the top-left corner as defined when the text is read in the &#x27;natural&#x27; orientation. For example: * when the text is horizontal it might look like: 0----1 | | 3----2 * when it&#x27;s rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3).
                        &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                          { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                            &quot;y&quot;: 3.14, # Y coordinate.
                            &quot;x&quot;: 3.14, # X coordinate.
                          },
                        ],
                        &quot;vertices&quot;: [ # The bounding polygon vertices.
                          { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                            &quot;y&quot;: 42, # Y coordinate.
                            &quot;x&quot;: 42, # X coordinate.
                          },
                        ],
                      },
                      &quot;property&quot;: { # Additional information detected on the structural component. # Additional information detected for the paragraph.
                        &quot;detectedBreak&quot;: { # Detected start or end of a structural component. # Detected start or end of a text segment.
                          &quot;isPrefix&quot;: True or False, # True if break prepends the element.
                          &quot;type&quot;: &quot;A String&quot;, # Detected break type.
                        },
                        &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
                          { # Detected language for a structural component.
                            &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                            &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                          },
                        ],
                      },
                      &quot;confidence&quot;: 3.14, # Confidence of the OCR results for the paragraph. Range [0, 1].
                      &quot;words&quot;: [ # List of all words in this paragraph.
                        { # A word representation.
                          &quot;confidence&quot;: 3.14, # Confidence of the OCR results for the word. Range [0, 1].
                          &quot;boundingBox&quot;: { # A bounding polygon for the detected image annotation. # The bounding box for the word. The vertices are in the order of top-left, top-right, bottom-right, bottom-left. When a rotation of the bounding box is detected the rotation is represented as around the top-left corner as defined when the text is read in the &#x27;natural&#x27; orientation. For example: * when the text is horizontal it might look like: 0----1 | | 3----2 * when it&#x27;s rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3).
                            &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                              { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                                &quot;y&quot;: 3.14, # Y coordinate.
                                &quot;x&quot;: 3.14, # X coordinate.
                              },
                            ],
                            &quot;vertices&quot;: [ # The bounding polygon vertices.
                              { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                                &quot;y&quot;: 42, # Y coordinate.
                                &quot;x&quot;: 42, # X coordinate.
                              },
                            ],
                          },
                          &quot;symbols&quot;: [ # List of symbols in the word. The order of the symbols follows the natural reading order.
                            { # A single symbol representation.
                              &quot;property&quot;: { # Additional information detected on the structural component. # Additional information detected for the symbol.
                                &quot;detectedBreak&quot;: { # Detected start or end of a structural component. # Detected start or end of a text segment.
                                  &quot;isPrefix&quot;: True or False, # True if break prepends the element.
                                  &quot;type&quot;: &quot;A String&quot;, # Detected break type.
                                },
                                &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
                                  { # Detected language for a structural component.
                                    &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                                    &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                                  },
                                ],
                              },
                              &quot;text&quot;: &quot;A String&quot;, # The actual UTF-8 representation of the symbol.
                              &quot;boundingBox&quot;: { # A bounding polygon for the detected image annotation. # The bounding box for the symbol. The vertices are in the order of top-left, top-right, bottom-right, bottom-left. When a rotation of the bounding box is detected the rotation is represented as around the top-left corner as defined when the text is read in the &#x27;natural&#x27; orientation. For example: * when the text is horizontal it might look like: 0----1 | | 3----2 * when it&#x27;s rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3).
                                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                                    &quot;y&quot;: 3.14, # Y coordinate.
                                    &quot;x&quot;: 3.14, # X coordinate.
                                  },
                                ],
                                &quot;vertices&quot;: [ # The bounding polygon vertices.
                                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                                    &quot;y&quot;: 42, # Y coordinate.
                                    &quot;x&quot;: 42, # X coordinate.
                                  },
                                ],
                              },
                              &quot;confidence&quot;: 3.14, # Confidence of the OCR results for the symbol. Range [0, 1].
                            },
                          ],
                          &quot;property&quot;: { # Additional information detected on the structural component. # Additional information detected for the word.
                            &quot;detectedBreak&quot;: { # Detected start or end of a structural component. # Detected start or end of a text segment.
                              &quot;isPrefix&quot;: True or False, # True if break prepends the element.
                              &quot;type&quot;: &quot;A String&quot;, # Detected break type.
                            },
                            &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
                              { # Detected language for a structural component.
                                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                              },
                            ],
                          },
                        },
                      ],
                    },
                  ],
                  &quot;confidence&quot;: 3.14, # Confidence of the OCR results on the block. Range [0, 1].
                  &quot;property&quot;: { # Additional information detected on the structural component. # Additional information detected for the block.
                    &quot;detectedBreak&quot;: { # Detected start or end of a structural component. # Detected start or end of a text segment.
                      &quot;isPrefix&quot;: True or False, # True if break prepends the element.
                      &quot;type&quot;: &quot;A String&quot;, # Detected break type.
                    },
                    &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
                      { # Detected language for a structural component.
                        &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                        &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                      },
                    ],
                  },
                  &quot;boundingBox&quot;: { # A bounding polygon for the detected image annotation. # The bounding box for the block. The vertices are in the order of top-left, top-right, bottom-right, bottom-left. When a rotation of the bounding box is detected the rotation is represented as around the top-left corner as defined when the text is read in the &#x27;natural&#x27; orientation. For example: * when the text is horizontal it might look like: 0----1 | | 3----2 * when it&#x27;s rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3).
                    &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                      { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                        &quot;y&quot;: 3.14, # Y coordinate.
                        &quot;x&quot;: 3.14, # X coordinate.
                      },
                    ],
                    &quot;vertices&quot;: [ # The bounding polygon vertices.
                      { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                        &quot;y&quot;: 42, # Y coordinate.
                        &quot;x&quot;: 42, # X coordinate.
                      },
                    ],
                  },
                  &quot;blockType&quot;: &quot;A String&quot;, # Detected block type (text, image etc) for this block.
                },
              ],
            },
          ],
          &quot;text&quot;: &quot;A String&quot;, # UTF-8 text detected on the pages.
        },
        &quot;cropHintsAnnotation&quot;: { # Set of crop hints that are used to generate new crops when serving images. # If present, crop hints have completed successfully.
          &quot;cropHints&quot;: [ # Crop hint results.
            { # Single crop hint that is used to generate a new crop when serving an image.
              &quot;importanceFraction&quot;: 3.14, # Fraction of importance of this salient region with respect to the original image.
              &quot;confidence&quot;: 3.14, # Confidence of this being a salient region. Range [0, 1].
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the crop region. The coordinates of the bounding box are in the original image&#x27;s scale.
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
              },
            },
          ],
        },
        &quot;localizedObjectAnnotations&quot;: [ # If present, localized object detection has completed successfully. This will be sorted descending by confidence score.
          { # Set of detected objects with bounding boxes.
            &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # Image region to which this object belongs. This must be populated.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
            &quot;mid&quot;: &quot;A String&quot;, # Object ID that should align with EntityAnnotation mid.
            &quot;name&quot;: &quot;A String&quot;, # Object name, expressed in its `language_code` language.
            &quot;score&quot;: 3.14, # Score of the result. Range [0, 1].
          },
        ],
        &quot;context&quot;: { # If an image was produced from a file (e.g. a PDF), this message gives information about the source of that image. # If present, contextual information is needed to understand where this image comes from.
          &quot;pageNumber&quot;: 42, # If the file was a PDF or TIFF, this field gives the page number within the file used to produce the image.
          &quot;uri&quot;: &quot;A String&quot;, # The URI of the file used to produce the image.
        },
        &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # If set, represents the error message for the operation. Note that filled-in image annotations are guaranteed to be correct, even when `error` is set.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        },
        &quot;productSearchResults&quot;: { # Results for a product search request. # If present, product search has completed successfully.
          &quot;results&quot;: [ # List of results, one for each product match.
            { # Information about a product.
              &quot;image&quot;: &quot;A String&quot;, # The resource name of the image from the product that is the closest match to the query.
              &quot;score&quot;: 3.14, # A confidence level on the match, ranging from 0 (no confidence) to 1 (full confidence).
              &quot;product&quot;: { # A Product contains ReferenceImages. # The Product.
                &quot;name&quot;: &quot;A String&quot;, # The resource name of the product. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. This field is ignored when creating a product.
                &quot;productCategory&quot;: &quot;A String&quot;, # Immutable. The category for the product identified by the reference image. This should be one of &quot;homegoods-v2&quot;, &quot;apparel-v2&quot;, &quot;toys-v2&quot;, &quot;packagedgoods-v1&quot; or &quot;general-v1&quot;. The legacy categories &quot;homegoods&quot;, &quot;apparel&quot;, and &quot;toys&quot; are still supported, but these should not be used for new products.
                &quot;displayName&quot;: &quot;A String&quot;, # The user-provided name for this Product. Must not be empty. Must be at most 4096 characters long.
                &quot;productLabels&quot;: [ # Key-value pairs that can be attached to a product. At query time, constraints can be specified based on the product_labels. Note that integer values can be provided as strings, e.g. &quot;1199&quot;. Only strings with integer values can match a range-based restriction which is to be supported soon. Multiple values can be assigned to the same key. One product may have up to 500 product_labels. Notice that the total number of distinct product_labels over all products in one ProductSet cannot exceed 1M, otherwise the product search pipeline will refuse to work for that ProductSet.
                  { # A product label represented as a key-value pair.
                    &quot;value&quot;: &quot;A String&quot;, # The value of the label attached to the product. Cannot be empty and cannot exceed 128 bytes.
                    &quot;key&quot;: &quot;A String&quot;, # The key of the label attached to the product. Cannot be empty and cannot exceed 128 bytes.
                  },
                ],
                &quot;description&quot;: &quot;A String&quot;, # User-provided metadata to be stored with this product. Must be at most 4096 characters long.
              },
            },
          ],
          &quot;indexTime&quot;: &quot;A String&quot;, # Timestamp of the index which provided these results. Products added to the product set and products removed from the product set after this time are not reflected in the current results.
          &quot;productGroupedResults&quot;: [ # List of results grouped by products detected in the query image. Each entry corresponds to one bounding polygon in the query image, and contains the matching products specific to that region. There may be duplicate product matches in the union of all the per-product results.
            { # Information about the products similar to a single product in a query image.
              &quot;objectAnnotations&quot;: [ # List of generic predictions for the object in the bounding box.
                { # Prediction for what the object in the bounding box is.
                  &quot;mid&quot;: &quot;A String&quot;, # Object ID that should align with EntityAnnotation mid.
                  &quot;name&quot;: &quot;A String&quot;, # Object name, expressed in its `language_code` language.
                  &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                  &quot;score&quot;: 3.14, # Score of the result. Range [0, 1].
                },
              ],
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon around the product detected in the query image.
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
              },
              &quot;results&quot;: [ # List of results, one for each product match.
                { # Information about a product.
                  &quot;image&quot;: &quot;A String&quot;, # The resource name of the image from the product that is the closest match to the query.
                  &quot;score&quot;: 3.14, # A confidence level on the match, ranging from 0 (no confidence) to 1 (full confidence).
                  &quot;product&quot;: { # A Product contains ReferenceImages. # The Product.
                    &quot;name&quot;: &quot;A String&quot;, # The resource name of the product. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. This field is ignored when creating a product.
                    &quot;productCategory&quot;: &quot;A String&quot;, # Immutable. The category for the product identified by the reference image. This should be one of &quot;homegoods-v2&quot;, &quot;apparel-v2&quot;, &quot;toys-v2&quot;, &quot;packagedgoods-v1&quot; or &quot;general-v1&quot;. The legacy categories &quot;homegoods&quot;, &quot;apparel&quot;, and &quot;toys&quot; are still supported, but these should not be used for new products.
                    &quot;displayName&quot;: &quot;A String&quot;, # The user-provided name for this Product. Must not be empty. Must be at most 4096 characters long.
                    &quot;productLabels&quot;: [ # Key-value pairs that can be attached to a product. At query time, constraints can be specified based on the product_labels. Note that integer values can be provided as strings, e.g. &quot;1199&quot;. Only strings with integer values can match a range-based restriction which is to be supported soon. Multiple values can be assigned to the same key. One product may have up to 500 product_labels. Notice that the total number of distinct product_labels over all products in one ProductSet cannot exceed 1M, otherwise the product search pipeline will refuse to work for that ProductSet.
                      { # A product label represented as a key-value pair.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the label attached to the product. Cannot be empty and cannot exceed 128 bytes.
                        &quot;key&quot;: &quot;A String&quot;, # The key of the label attached to the product. Cannot be empty and cannot exceed 128 bytes.
                      },
                    ],
                    &quot;description&quot;: &quot;A String&quot;, # User-provided metadata to be stored with this product. Must be at most 4096 characters long.
                  },
                },
              ],
            },
          ],
        },
        &quot;textAnnotations&quot;: [ # If present, text (OCR) detection has completed successfully.
          { # Set of detected entity features.
            &quot;score&quot;: 3.14, # Overall score of the result. Range [0, 1].
            &quot;confidence&quot;: 3.14, # **Deprecated. Use `score` instead.** The accuracy of the entity detection in an image. For example, for an image in which the &quot;Eiffel Tower&quot; entity is detected, this field represents the confidence that there is a tower in the query image. Range [0, 1].
            &quot;locations&quot;: [ # The location information for the detected entity. Multiple `LocationInfo` elements can be present because one location may indicate the location of the scene in the image, and another location may indicate the location of the place where the image was taken. Location information is usually present for landmarks.
              { # Detected entity location information.
                &quot;latLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # lat/long location coordinates.
                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
              },
            ],
            &quot;topicality&quot;: 3.14, # The relevancy of the ICA (Image Content Annotation) label to the image. For example, the relevancy of &quot;tower&quot; is likely higher to an image containing the detected &quot;Eiffel Tower&quot; than to an image containing a detected distant towering building, even though the confidence that there is a tower in each image may be the same. Range [0, 1].
            &quot;locale&quot;: &quot;A String&quot;, # The language code for the locale in which the entity textual `description` is expressed.
            &quot;mid&quot;: &quot;A String&quot;, # Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
            &quot;properties&quot;: [ # Some entities may have optional user-supplied `Property` (name/value) fields, such a score or string that qualifies the entity.
              { # A `Property` consists of a user-supplied name/value pair.
                &quot;uint64Value&quot;: &quot;A String&quot;, # Value of numeric properties.
                &quot;name&quot;: &quot;A String&quot;, # Name of the property.
                &quot;value&quot;: &quot;A String&quot;, # Value of the property.
              },
            ],
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not produced for `LABEL_DETECTION` features.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
            &quot;description&quot;: &quot;A String&quot;, # Entity textual description, expressed in its `locale` language.
          },
        ],
        &quot;webDetection&quot;: { # Relevant information for the image from the Internet. # If present, web detection has completed successfully.
          &quot;webEntities&quot;: [ # Deduced entities from similar images on the Internet.
            { # Entity deduced from similar images on the Internet.
              &quot;score&quot;: 3.14, # Overall relevancy score for the entity. Not normalized and not comparable across different image queries.
              &quot;description&quot;: &quot;A String&quot;, # Canonical description of the entity, in English.
              &quot;entityId&quot;: &quot;A String&quot;, # Opaque entity ID.
            },
          ],
          &quot;partialMatchingImages&quot;: [ # Partial matching images from the Internet. Those images are similar enough to share some key-point features. For example an original image will likely have partial matching for its crops.
            { # Metadata for online images.
              &quot;score&quot;: 3.14, # (Deprecated) Overall relevancy score for the image.
              &quot;url&quot;: &quot;A String&quot;, # The result image URL.
            },
          ],
          &quot;visuallySimilarImages&quot;: [ # The visually similar image results.
            { # Metadata for online images.
              &quot;score&quot;: 3.14, # (Deprecated) Overall relevancy score for the image.
              &quot;url&quot;: &quot;A String&quot;, # The result image URL.
            },
          ],
          &quot;pagesWithMatchingImages&quot;: [ # Web pages containing the matching images from the Internet.
            { # Metadata for web pages.
              &quot;score&quot;: 3.14, # (Deprecated) Overall relevancy score for the web page.
              &quot;fullMatchingImages&quot;: [ # Fully matching images on the page. Can include resized copies of the query image.
                { # Metadata for online images.
                  &quot;score&quot;: 3.14, # (Deprecated) Overall relevancy score for the image.
                  &quot;url&quot;: &quot;A String&quot;, # The result image URL.
                },
              ],
              &quot;partialMatchingImages&quot;: [ # Partial matching images on the page. Those images are similar enough to share some key-point features. For example an original image will likely have partial matching for its crops.
                { # Metadata for online images.
                  &quot;score&quot;: 3.14, # (Deprecated) Overall relevancy score for the image.
                  &quot;url&quot;: &quot;A String&quot;, # The result image URL.
                },
              ],
              &quot;pageTitle&quot;: &quot;A String&quot;, # Title for the web page, may contain HTML markups.
              &quot;url&quot;: &quot;A String&quot;, # The result web page URL.
            },
          ],
          &quot;bestGuessLabels&quot;: [ # The service&#x27;s best guess as to the topic of the request image. Inferred from similar images on the open web.
            { # Label to provide extra metadata for the web detection.
              &quot;label&quot;: &quot;A String&quot;, # Label for extra metadata.
              &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code for `label`, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
            },
          ],
          &quot;fullMatchingImages&quot;: [ # Fully matching images from the Internet. Can include resized copies of the query image.
            { # Metadata for online images.
              &quot;score&quot;: 3.14, # (Deprecated) Overall relevancy score for the image.
              &quot;url&quot;: &quot;A String&quot;, # The result image URL.
            },
          ],
        },
        &quot;landmarkAnnotations&quot;: [ # If present, landmark detection has completed successfully.
          { # Set of detected entity features.
            &quot;score&quot;: 3.14, # Overall score of the result. Range [0, 1].
            &quot;confidence&quot;: 3.14, # **Deprecated. Use `score` instead.** The accuracy of the entity detection in an image. For example, for an image in which the &quot;Eiffel Tower&quot; entity is detected, this field represents the confidence that there is a tower in the query image. Range [0, 1].
            &quot;locations&quot;: [ # The location information for the detected entity. Multiple `LocationInfo` elements can be present because one location may indicate the location of the scene in the image, and another location may indicate the location of the place where the image was taken. Location information is usually present for landmarks.
              { # Detected entity location information.
                &quot;latLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # lat/long location coordinates.
                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
              },
            ],
            &quot;topicality&quot;: 3.14, # The relevancy of the ICA (Image Content Annotation) label to the image. For example, the relevancy of &quot;tower&quot; is likely higher to an image containing the detected &quot;Eiffel Tower&quot; than to an image containing a detected distant towering building, even though the confidence that there is a tower in each image may be the same. Range [0, 1].
            &quot;locale&quot;: &quot;A String&quot;, # The language code for the locale in which the entity textual `description` is expressed.
            &quot;mid&quot;: &quot;A String&quot;, # Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
            &quot;properties&quot;: [ # Some entities may have optional user-supplied `Property` (name/value) fields, such a score or string that qualifies the entity.
              { # A `Property` consists of a user-supplied name/value pair.
                &quot;uint64Value&quot;: &quot;A String&quot;, # Value of numeric properties.
                &quot;name&quot;: &quot;A String&quot;, # Name of the property.
                &quot;value&quot;: &quot;A String&quot;, # Value of the property.
              },
            ],
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not produced for `LABEL_DETECTION` features.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
            &quot;description&quot;: &quot;A String&quot;, # Entity textual description, expressed in its `locale` language.
          },
        ],
        &quot;safeSearchAnnotation&quot;: { # Set of features pertaining to the image, computed by computer vision methods over safe-search verticals (for example, adult, spoof, medical, violence). # If present, safe-search annotation has completed successfully.
          &quot;racy&quot;: &quot;A String&quot;, # Likelihood that the request image contains racy content. Racy content may include (but is not limited to) skimpy or sheer clothing, strategically covered nudity, lewd or provocative poses, or close-ups of sensitive body areas.
          &quot;medical&quot;: &quot;A String&quot;, # Likelihood that this is a medical image.
          &quot;spoof&quot;: &quot;A String&quot;, # Spoof likelihood. The likelihood that an modification was made to the image&#x27;s canonical version to make it appear funny or offensive.
          &quot;adult&quot;: &quot;A String&quot;, # Represents the adult content likelihood for the image. Adult content may contain elements such as nudity, pornographic images or cartoons, or sexual activities.
          &quot;violence&quot;: &quot;A String&quot;, # Likelihood that this image contains violent content.
        },
        &quot;imagePropertiesAnnotation&quot;: { # Stores image properties, such as dominant colors. # If present, image properties were extracted successfully.
          &quot;dominantColors&quot;: { # Set of dominant colors and their corresponding scores. # If present, dominant colors completed successfully.
            &quot;colors&quot;: [ # RGB color values with their score and pixel fraction.
              { # Color information consists of RGB channels, score, and the fraction of the image that the color occupies in the image.
                &quot;pixelFraction&quot;: 3.14, # The fraction of pixels the color occupies in the image. Value in range [0, 1].
                &quot;score&quot;: 3.14, # Image-specific score for this color. Value in range [0, 1].
                &quot;color&quot;: { # Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness; for example, the fields of this representation can be trivially provided to the constructor of &quot;java.awt.Color&quot; in Java; it can also be trivially provided to UIColor&#x27;s &quot;+colorWithRed:green:blue:alpha&quot; method in iOS; and, with just a little work, it can be easily formatted into a CSS &quot;rgba()&quot; string in JavaScript, as well. Note: this proto does not carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color space. Note: when color equality needs to be decided, implementations, unless documented otherwise, will treat two colors to be equal if all their red, green, blue and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor_(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor_ = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # RGB components of the color.
                  &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
                  &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
                  &quot;alpha&quot;: 3.14, # The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: pixel color = alpha * (this color) + (1.0 - alpha) * (background color) This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is to be rendered as a solid color (as if the alpha value had been explicitly given with a value of 1.0).
                  &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
                },
              },
            ],
          },
        },
        &quot;logoAnnotations&quot;: [ # If present, logo detection has completed successfully.
          { # Set of detected entity features.
            &quot;score&quot;: 3.14, # Overall score of the result. Range [0, 1].
            &quot;confidence&quot;: 3.14, # **Deprecated. Use `score` instead.** The accuracy of the entity detection in an image. For example, for an image in which the &quot;Eiffel Tower&quot; entity is detected, this field represents the confidence that there is a tower in the query image. Range [0, 1].
            &quot;locations&quot;: [ # The location information for the detected entity. Multiple `LocationInfo` elements can be present because one location may indicate the location of the scene in the image, and another location may indicate the location of the place where the image was taken. Location information is usually present for landmarks.
              { # Detected entity location information.
                &quot;latLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # lat/long location coordinates.
                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
              },
            ],
            &quot;topicality&quot;: 3.14, # The relevancy of the ICA (Image Content Annotation) label to the image. For example, the relevancy of &quot;tower&quot; is likely higher to an image containing the detected &quot;Eiffel Tower&quot; than to an image containing a detected distant towering building, even though the confidence that there is a tower in each image may be the same. Range [0, 1].
            &quot;locale&quot;: &quot;A String&quot;, # The language code for the locale in which the entity textual `description` is expressed.
            &quot;mid&quot;: &quot;A String&quot;, # Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
            &quot;properties&quot;: [ # Some entities may have optional user-supplied `Property` (name/value) fields, such a score or string that qualifies the entity.
              { # A `Property` consists of a user-supplied name/value pair.
                &quot;uint64Value&quot;: &quot;A String&quot;, # Value of numeric properties.
                &quot;name&quot;: &quot;A String&quot;, # Name of the property.
                &quot;value&quot;: &quot;A String&quot;, # Value of the property.
              },
            ],
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not produced for `LABEL_DETECTION` features.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
            &quot;description&quot;: &quot;A String&quot;, # Entity textual description, expressed in its `locale` language.
          },
        ],
        &quot;labelAnnotations&quot;: [ # If present, label detection has completed successfully.
          { # Set of detected entity features.
            &quot;score&quot;: 3.14, # Overall score of the result. Range [0, 1].
            &quot;confidence&quot;: 3.14, # **Deprecated. Use `score` instead.** The accuracy of the entity detection in an image. For example, for an image in which the &quot;Eiffel Tower&quot; entity is detected, this field represents the confidence that there is a tower in the query image. Range [0, 1].
            &quot;locations&quot;: [ # The location information for the detected entity. Multiple `LocationInfo` elements can be present because one location may indicate the location of the scene in the image, and another location may indicate the location of the place where the image was taken. Location information is usually present for landmarks.
              { # Detected entity location information.
                &quot;latLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # lat/long location coordinates.
                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
              },
            ],
            &quot;topicality&quot;: 3.14, # The relevancy of the ICA (Image Content Annotation) label to the image. For example, the relevancy of &quot;tower&quot; is likely higher to an image containing the detected &quot;Eiffel Tower&quot; than to an image containing a detected distant towering building, even though the confidence that there is a tower in each image may be the same. Range [0, 1].
            &quot;locale&quot;: &quot;A String&quot;, # The language code for the locale in which the entity textual `description` is expressed.
            &quot;mid&quot;: &quot;A String&quot;, # Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
            &quot;properties&quot;: [ # Some entities may have optional user-supplied `Property` (name/value) fields, such a score or string that qualifies the entity.
              { # A `Property` consists of a user-supplied name/value pair.
                &quot;uint64Value&quot;: &quot;A String&quot;, # Value of numeric properties.
                &quot;name&quot;: &quot;A String&quot;, # Name of the property.
                &quot;value&quot;: &quot;A String&quot;, # Value of the property.
              },
            ],
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not produced for `LABEL_DETECTION` features.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
            &quot;description&quot;: &quot;A String&quot;, # Entity textual description, expressed in its `locale` language.
          },
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="asyncBatchAnnotate">asyncBatchAnnotate(body=None, x__xgafv=None)</code>
  <pre>Run asynchronous image detection and annotation for a list of images. Progress and results can be retrieved through the `google.longrunning.Operations` interface. `Operation.metadata` contains `OperationMetadata` (metadata). `Operation.response` contains `AsyncBatchAnnotateImagesResponse` (results). This service will write image annotation outputs to json files in customer GCS bucket, each json file containing BatchAnnotateImagesResponse proto.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request for async image annotation for a list of images.
    &quot;parent&quot;: &quot;A String&quot;, # Optional. Target project and location to make a call. Format: `projects/{project-id}/locations/{location-id}`. If no parent is specified, a region will be chosen automatically. Supported location-ids: `us`: USA country only, `asia`: East asia areas, like Japan, Taiwan, `eu`: The European Union. Example: `projects/project-A/locations/eu`.
    &quot;requests&quot;: [ # Required. Individual image annotation requests for this batch.
      { # Request for performing Google Cloud Vision API tasks over a user-provided image, with user-requested features, and with context information.
        &quot;features&quot;: [ # Requested features.
          { # The type of Google Cloud Vision API detection to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list.
            &quot;type&quot;: &quot;A String&quot;, # The feature type.
            &quot;model&quot;: &quot;A String&quot;, # Model to use for the feature. Supported values: &quot;builtin/stable&quot; (the default if unset) and &quot;builtin/latest&quot;.
            &quot;maxResults&quot;: 42, # Maximum number of results of this type. Does not apply to `TEXT_DETECTION`, `DOCUMENT_TEXT_DETECTION`, or `CROP_HINTS`.
          },
        ],
        &quot;image&quot;: { # Client image to perform Google Cloud Vision API tasks over. # The image to be processed.
          &quot;source&quot;: { # External image source (Google Cloud Storage or web URL image location). # Google Cloud Storage image location, or publicly-accessible image URL. If both `content` and `source` are provided for an image, `content` takes precedence and is used to perform the image annotation request.
            &quot;gcsImageUri&quot;: &quot;A String&quot;, # **Use `image_uri` instead.** The Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. See [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris) for more info.
            &quot;imageUri&quot;: &quot;A String&quot;, # The URI of the source image. Can be either: 1. A Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. See [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris) for more info. 2. A publicly-accessible image HTTP/HTTPS URL. When fetching images from HTTP/HTTPS URLs, Google cannot guarantee that the request will be completed. Your request may fail if the specified host denies the request (e.g. due to request throttling or DOS prevention), or if Google throttles requests to the site for abuse prevention. You should not depend on externally-hosted images for production applications. When both `gcs_image_uri` and `image_uri` are specified, `image_uri` takes precedence.
          },
          &quot;content&quot;: &quot;A String&quot;, # Image content, represented as a stream of bytes. Note: As with all `bytes` fields, protobuffers use a pure binary representation, whereas JSON representations use base64. Currently, this field only works for BatchAnnotateImages requests. It does not work for AsyncBatchAnnotateImages requests.
        },
        &quot;imageContext&quot;: { # Image context and/or feature-specific parameters. # Additional context that may accompany the image.
          &quot;cropHintsParams&quot;: { # Parameters for crop hints annotation request. # Parameters for crop hints annotation request.
            &quot;aspectRatios&quot;: [ # Aspect ratios in floats, representing the ratio of the width to the height of the image. For example, if the desired aspect ratio is 4/3, the corresponding float value should be 1.33333. If not specified, the best possible crop is returned. The number of provided aspect ratios is limited to a maximum of 16; any aspect ratios provided after the 16th are ignored.
              3.14,
            ],
          },
          &quot;latLongRect&quot;: { # Rectangle determined by min and max `LatLng` pairs. # Not used.
            &quot;maxLatLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Max lat/long pair.
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;minLatLng&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Min lat/long pair.
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
          },
          &quot;webDetectionParams&quot;: { # Parameters for web detection request. # Parameters for web detection.
            &quot;includeGeoResults&quot;: True or False, # Whether to include results derived from the geo information in the image.
          },
          &quot;productSearchParams&quot;: { # Parameters for a product search request. # Parameters for product search.
            &quot;productSet&quot;: &quot;A String&quot;, # The resource name of a ProductSet to be searched for similar images. Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`.
            &quot;productCategories&quot;: [ # The list of product categories to search in. Currently, we only consider the first category, and either &quot;homegoods-v2&quot;, &quot;apparel-v2&quot;, &quot;toys-v2&quot;, &quot;packagedgoods-v1&quot;, or &quot;general-v1&quot; should be specified. The legacy categories &quot;homegoods&quot;, &quot;apparel&quot;, and &quot;toys&quot; are still supported but will be deprecated. For new products, please use &quot;homegoods-v2&quot;, &quot;apparel-v2&quot;, or &quot;toys-v2&quot; for better product search accuracy. It is recommended to migrate existing products to these categories as well.
              &quot;A String&quot;,
            ],
            &quot;filter&quot;: &quot;A String&quot;, # The filtering expression. This can be used to restrict search results based on Product labels. We currently support an AND of OR of key-value expressions, where each expression within an OR must have the same key. An &#x27;=&#x27; should be used to connect the key and value. For example, &quot;(color = red OR color = blue) AND brand = Google&quot; is acceptable, but &quot;(color = red OR brand = Google)&quot; is not acceptable. &quot;color: red&quot; is not acceptable because it uses a &#x27;:&#x27; instead of an &#x27;=&#x27;.
            &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon around the area of interest in the image. If it is not specified, system discretion will be applied.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
          },
          &quot;languageHints&quot;: [ # List of languages to use for TEXT_DETECTION. In most cases, an empty value yields the best results since it enables automatic language detection. For languages based on the Latin alphabet, setting `language_hints` is not needed. In rare cases, when the language of the text in the image is known, setting a hint will help get better results (although it will be a significant hindrance if the hint is wrong). Text detection returns an error if one or more of the specified languages is not one of the [supported languages](https://cloud.google.com/vision/docs/languages).
            &quot;A String&quot;,
          ],
        },
      },
    ],
    &quot;outputConfig&quot;: { # The desired output location and metadata. # Required. The desired output location and metadata (e.g. format).
      &quot;batchSize&quot;: 42, # The max number of response protos to put into each output JSON file on Google Cloud Storage. The valid range is [1, 100]. If not specified, the default value is 20. For example, for one pdf file with 100 pages, 100 response protos will be generated. If `batch_size` = 20, then 5 json files each containing 20 response protos will be written under the prefix `gcs_destination`.`uri`. Currently, batch_size only applies to GcsDestination, with potential future support for other output configurations.
      &quot;gcsDestination&quot;: { # The Google Cloud Storage location where the output will be written to. # The Google Cloud Storage location to write the output(s) to.
        &quot;uri&quot;: &quot;A String&quot;, # Google Cloud Storage URI prefix where the results will be stored. Results will be in JSON format and preceded by its corresponding input URI prefix. This field can either represent a gcs file prefix or gcs directory. In either case, the uri should be unique because in order to get all of the output files, you will need to do a wildcard gcs search on the uri prefix you provide. Examples: * File Prefix: gs://bucket-name/here/filenameprefix The output files will be created in gs://bucket-name/here/ and the names of the output files will begin with &quot;filenameprefix&quot;. * Directory Prefix: gs://bucket-name/some/location/ The output files will be created in gs://bucket-name/some/location/ and the names of the output files could be anything because there was no filename prefix specified. If multiple outputs, each response is still AnnotateFileResponse, each of which contains some subset of the full list of AnnotateImageResponse. Multiple outputs can happen if, for example, the output JSON is too large and overflows into multiple sharded files.
      },
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

</body></html>