3

我似乎无法在我的谷歌云视觉代码中找到添加 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

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

4

1 回答 1

2

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

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

$ export GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

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


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

python googleimagetest_v.4.py "image_file.jpg"

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

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

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

于 2016-04-17T05:41:05.940 回答