Python Google Cloud Vision API:检测徽标类型错误
我试图在本地机器上用Python 2.7实现该功能 我有一个函数,最初是Google的label.py文件,在中给出 我最终编辑了主函数,并在弹出一些标签后调用detect_logos()。我现在在“logos=image.detect\u logos()”行的检测logos(路径)函数中遇到以下错误 TypeError:construct\u settings()得到一个意外的关键字参数“metrics\u headers” 此错误显然源于vision api中的immage_annotator_client.py文件。我一定错过了什么Python Google Cloud Vision API:检测徽标类型错误,python,google-cloud-vision,Python,Google Cloud Vision,我试图在本地机器上用Python 2.7实现该功能 我有一个函数,最初是Google的label.py文件,在中给出 我最终编辑了主函数,并在弹出一些标签后调用detect_logos()。我现在在“logos=image.detect\u logos()”行的检测logos(路径)函数中遇到以下错误 TypeError:construct\u settings()得到一个意外的关键字参数“metrics\u headers” 此错误显然源于vision api中的immage_annotato
def detectLabelsLogos(photo_file):
#configurable options: FREE TO CHANGE
resizedFileName = 'clone.jpeg' #name of resized files (are deleted at the end)
labelCount = 5 #max number of labels
#nonconfigurable options: DO NOT TOUCH
resized = False
filename = photo_file
service = googleapiclient.discovery.build('vision', 'v1')
#initial size check
imgSizeInBytes = os.stat(photo_file).st_size
if imgSizeInBytes >= MAX_IMAGE_SIZE_IN_BYTES:
print "\n[Image too large...resizing...]"
resized = True
filename = resizedFileName
with Image.open(photo_file) as image:
newimg = resizeimage.resize_thumbnail(image, [1600, 800])
newimg.save(filename, image.format)
newimg.close()
imgSizeInBytes = os.stat(filename).st_size
#ensure file is not empty
if imgSizeInBytes > 0:
# [START construct_request]
with open(filename, 'rb') as image:
image_content = base64.b64encode(image.read())
service_request = service.images().annotate(body={
'requests': [{
'image': {
'content': image_content.decode('UTF-8')
},
'features': [{
'type': 'LABEL_DETECTION',
'maxResults': labelCount
}]
}]
})
# [END construct_request]
# [START parse_response]
response = service_request.execute()
detect_logos(filename);
for i in range(0, labelCount):
if i >= len(response['responses'][0]['labelAnnotations']):
print "\n[Exhausted Responses]"
break
label = response['responses'][0]['labelAnnotations'][i]['description']
print('\nFound label: %s' % (label))
# [END parse_response]
image.close()
#delete resized file
if resized:
os.remove(filename)
else:
print "[Invalid File Input: Empty File]"
print "\n"
def detect_logos(path):
"""Detects logos in the file."""
vision_client = vision.Client()
print vision_client
with io.open(path, 'rb') as image_file:
content = image_file.read()
image = vision_client.image(content=content)
logos = image.detect_logos()
print('\nLogos:')
for logo in logos:
print(logo.description)
我还一直在做“设置GOOGLE应用程序凭据=/blah/blah/serviceaccountkey.json”您可能想尝试将
GOOGLE.cloud
客户端库用于Vision API
看看我认为你想做什么:
>>> from google.cloud import vision
>>> client = vision.Client()
>>> image = client.image(source_uri='gs://my-storage-bucket/image.jpg')
>>> labels = image.detect_labels(limit=3)
>>> labels[0].description
'automobile'
>>> labels[0].score
0.9863683
别忘了!您需要在Cloud Vision中使用服务帐户(旧的gcloud auth登录名
将不起作用)