谷歌云视觉 API - Python

Posted

技术标签:

【中文标题】谷歌云视觉 API - Python【英文标题】:Google Cloud Vision API - Python 【发布时间】:2016-04-12 10:10:23 【问题描述】:

我似乎无法在我的谷歌云视觉代码中找到添加 API 密钥的位置或我需要定位到谷歌凭据文件的位置:

    import argparse
    import base64
    import httplib2
    import validators
    import requests

    from apiclient.discovery import build
    from oauth2client.client import GoogleCredentials


    def main(photo_file):
      '''Run a label request on a single image'''

      API_DISCOVERY_FILE = 'https://vision.googleapis.com/$discovery/rest?version=v1'
      http = httplib2.Http()

      credentials = GoogleCredentials.get_application_default().create_scoped(
          ['https://www.googleapis.com/auth/cloud-platform'])
      credentials.authorize(http)

      service = build('vision', 'v1', http, discoveryServiceUrl=API_DISCOVERY_FILE)

    if __name__ == '__main__':
      parser = argparse.ArgumentParser()
      parser.add_argument(
        'image_file', help='The image you\'d like to label.')
      args = parser.parse_args()
      main(args.image_file)

    photo_file = "image_of_bottle.jpg"
    main(photo_file)

有谁知道我可以在哪里添加 API 密钥或找到凭据文件?

编辑:添加了 Eray Balkanli 推荐的更改,我在通话中添加了我的图像文件。我不确定我是否正确:

import argparse
import base64
import httplib2
import validators
import requests

from apiclient.discovery import build
from oauth2client.client import GoogleCredentials


def main(photo_file,developerkey):
  '''Run a label request on a single image'''

  API_DISCOVERY_FILE = 'https://vision.googleapis.com/$discovery/rest?version=v1'
  http = httplib2.Http()

  credentials = GoogleCredentials.get_application_default().create_scoped(
      ['https://www.googleapis.com/auth/cloud-platform'])
  credentials.authorize(http)

  service = build('vision', 'v1', http, discoveryServiceUrl=API_DISCOVERY_FILE,developerkey=INSERT API KEY)

if __name__ == '__main__':
  parser = argparse.ArgumentParser()
  parser.add_argument(
    'image_file', help='The image you\'d like to label.')
  args = parser.parse_args()
  main(args.image_file)

photo_file = "image_file.jpg"
main(photo_file,developerkey)

我收到以下错误:

usage: googleimagetest_v.4.py [-h] image_file
googleimagetest_v.4.py: error: too few arguments

有谁知道我该如何解决这个错误?

【问题讨论】:

我试图问你到底是如何运行你的课程的。你应该运行这个类: $ python googleimagetest_v.4.py image_file ......你如何尝试运行请插入问题。检查这个问题:***.com/questions/30638974/… 你看过python示例github.com/GoogleCloudPlatform/cloud-vision/tree/master/python吗?此示例包含有关凭据设置的信息 github.com/GoogleCloudPlatform/cloud-vision/tree/master/python/… 【参考方案1】:

authenticating an API 的 Google Vision API 文档清楚地提供了有关如何获取凭据的分步指南,该页面的最后一部分描述了 Authenticating with Application Default Credentials

应用程序向 Google Cloud 进行身份验证的最简单方法 平台 API 服务是使用应用程序默认凭据 (ADC)。使用 ADC 的服务首先在一个 GOOGLE_APPLICATION_CREDENTIALS 环境变量。除非你 特别希望 ADC 使用其他凭据(例如,用户 凭据),我们建议您将此环境变量设置为指向 到您的服务帐户密钥文件(您下载时下载的 .json 文件) 创建了一个服务帐户密钥,如设置服务中所述 帐户。

$ export GOOGLE_APPLICATION_CREDENTIALS=

如果重要(如果您尚未注册),Google 会为您提供 free trial 访问其云平台的权限(365 天价值 300 美元)。他们对于 Vision API 的低 pricing,恕我直言,应该可以让您为测试做很多事情。


现在,代码中的错误;即使您对错误的描述尚不清楚,但看起来您的代码接受了一个参数,但您试图在没有参数的情况下运行您的 python 脚本。您可以通过以下方式运行您的代码:

python googleimagetest_v.4.py "image_file.jpg"

并且您不需要以下 2 行(因为它是对 main() 的重复调用)

photo_file = "image_file.jpg"
main(photo_file,developerkey)

您已定义 main() 函数以接受 2 个参数,但是当您在 __main__ 部分调用它时,您传递的是一个参数。你可能也想解决这个问题。

【讨论】:

以上是关于谷歌云视觉 API - Python的主要内容,如果未能解决你的问题,请参考以下文章

使用谷歌云视觉 API

谷歌云视觉 API“请求准入被拒绝”

来自谷歌云视觉 API OCR 的逐行数据

谷歌云视觉类别检测

Android 谷歌云视觉 API 获取 Json 并使用 Json 去另一个活动

在谷歌云视觉 API 中调用 client.text_detection() 获取 TypeError: type object got multiple values for keyword arg