0

我正在使用带有 Python 的 Google 云视觉 API
( https://googlecloudplatform.github.io/google-cloud-python/stable/vision-usage.html )

但是我不明白为什么单个图像的注释结果由listsannotation组成。文件

>>> from google.cloud import vision
>>> from google.cloud.vision.feature import Feature
>>> from google.cloud.vision.feature import FeatureTypes
>>> client = vision.Client()
>>> image = client.image(source_uri='gs://my-test-bucket/image.jpg')
>>> features = [Feature(FeatureTypes.FACE_DETECTION, 5),
...             Feature(FeatureTypes.LOGO_DETECTION, 3)]
>>> annotations = image.detect(features)
>>> len(annotations)
2
>>> for face in annotations[0].faces:
...     print(face.joy)
Likelihood.VERY_LIKELY
Likelihood.VERY_LIKELY
Likelihood.VERY_LIKELY
>>> for logo in annotations[0].logos:
...     print(logo.description)
'google'
'github'

为什么要image.detect为单个图像返回多个注释?
这似乎没有必要,因为检测结果包含在每个属性中(annotations[0].facesannotations[0].logos等)。

当我用自己的图像尝试 api 时,它返回annotations长度为 1 的 api。

所以我的问题是:

  • 为什么python的vision api客户端为单个图像返回多个注释?
  • 我需要解析annotation列表中的每一个annotations吗?
4

1 回答 1

0

Google Cloud Vision API 目前提供了 10 种不同的注释,您可以将它们应用于任何图像。例如,在 10 个可用注释中,您可以检测到:

  • 如果图像中的任何位置存在任何可识别的徽标。
  • 您可以检测图像中是否存在任何人脸并返回有关每个人脸的详细信息。
  • 您可以从此处开始阅读有关所有可用注释的更多信息。

所以,回答你的问题:

  • 视觉 API 将返回您请求它返回的任何注释。如果您要求返回多个注释,它将返回多个。如果您只请求 10 个注释中的 1 个,它将只返回一个。您在帖子中引用的示例 Python 代码要求返回两个注释:FACE_DETECTION 和 LOGO_DETECTION,因此将返回这两个并且仅返回这两个注释。
  • 你只需要解析你想要解析的注解。由于每个注释都有费用(请参阅此页面了解价格),我建议您只请求您想要查看结果的注释,否则它可能会变得昂贵。

请注意,在运行您在帖子中引用的 Python 示例时,无论您选择通过代码检测多少注释,len(annotations) 都将返回“1”。

另请注意,您包含的任何不返回值的注释(例如,在图像中找不到徽标)都不会返回任何内容。

于 2017-09-11T19:33:30.367 回答