Python Google Cloud Vision API:检测徽标类型错误

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

我试图在本地机器上用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文件。我一定错过了什么

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登录名
将不起作用)