谷歌云视觉 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的主要内容,如果未能解决你的问题,请参考以下文章
Android 谷歌云视觉 API 获取 Json 并使用 Json 去另一个活动
在谷歌云视觉 API 中调用 client.text_detection() 获取 TypeError: type object got multiple values for keyword arg