[PYTHON] "AttributeError: Modul 'google.cloud.vision' hat keine Attributtypen '" in der Cloud Vision API (GCP Vision AI)

Überblick

Als ich das Tutorial der Objekterkennungs-API von GCP [^ 1] ausführte, trat ein Fehler auf, sodass ich eine Lösung schrieb. Die API-Authentifizierungsmethode wird weggelassen. Die verwendete Sprache ist Python.

Über den Fehler

Wenn ich den folgenden Code im Lernprogramm ausführe, erhalte ich einen AttributeError. (Der folgende Code wurde aus dem Tutorial kopiert.)

def localize_objects(path):
    from google.cloud import vision
    client = vision.ImageAnnotatorClient()

    with open(path, 'rb') as image_file:
        content = image_file.read()
    image = vision.types.Image(content=content)

    objects = client.object_localization(
        image=image).localized_object_annotations

    print('Number of objects found: {}'.format(len(objects)))
    for object_ in objects:
        print('\n{} (confidence: {})'.format(object_.name, object_.score))
        print('Normalized bounding polygon vertices: ')
        for vertex in object_.bounding_poly.normalized_vertices:
            print(' - ({}, {})'.format(vertex.x, vertex.y))

Die Details des Fehlers sind wie folgt. Es tritt in der 7. Zeile auf. Es scheint, dass Typen aus google.cloud.vision gelöscht wurden, sodass ein Fehler auftritt.

AttributeError: module 'google.cloud.vision' has no attribute 'types'

Lösung

OK, wenn Sie Image direkt aus der Sicht verwenden

image = vision.types.Image(content=content) #Error
image = vision.Image(content=content) #Lösung

Das ganze Bild ist wie folgt, nur die 7. Zeile wurde geändert

    """Localize objects in the local image.

    Args:
    path: The path to the local file.
    """
    from google.cloud import vision
    client = vision.ImageAnnotatorClient()

    with open(uri, 'rb') as image_file:
        content = image_file.read()
    image = vision.Image(content=content)

    objects = client.object_localization(
        image=image).localized_object_annotations

    print('Number of objects found: {}'.format(len(objects)))
    for object_ in objects:
        print('\n{} (confidence: {})'.format(object_.name, object_.score))
        print('Normalized bounding polygon vertices: ')
        for vertex in object_.bounding_poly.normalized_vertices:
            print(' - ({}, {})'.format(vertex.x, vertex.y))

Beiseite

Das offizielle Tutorial hat einige Fehler, nicht wahr? Es spielt keine Rolle, aber das GCP-Bild ist etwas schwierig zu verwenden, da es sich mit dem Kissenbild überlappt.

Recommended Posts

"AttributeError: Modul 'google.cloud.vision' hat keine Attributtypen '" in der Cloud Vision API (GCP Vision AI)
Textextraktion mit GCP Cloud Vision API (Python3.6)
Ablauf des Extrahierens von Text in PDF mit der Cloud Vision API
Erkennen Sie japanische Zeichen anhand von Bildern mithilfe der Cloud Vision-API von Google mit Python