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.
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'
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))
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