in ai-ml/vision-api-serverless-app-tutorial/6_doggo_demo/app.py [0:0]
def get_breeds():
dog_image_name = "two-doggos.jpg"
this_folder = Path(__file__).resolve().parent
with io.open(dog_image_name, "rb") as image:
content = image.read()
image = vision.Image(content=content)
objects = client.object_localization(image=image).localized_object_annotations
im = Image.open(dog_image_name)
count = 0
output = []
for obj in objects:
count += 1
# split image
box = [
(vertex.x * im.width, vertex.y * im.height)
for vertex in obj.bounding_poly.normalized_vertices
]
item = im.crop((box[0][0], box[0][1], box[2][0], box[2][1]))
item_fn = this_folder.joinpath(f"doggo_{count}.png")
item.save(item_fn)
output.append(f"<img src='/{item_fn.name}' />")
# detect labels on individual image
with io.open(item_fn, "rb") as image:
content = image.read()
image = vision.Image(content=content)
response = client.label_detection(image=image)
labels = [label.description for label in response.label_annotations]
mids = [label.mid for label in response.label_annotations]
output.append(f"Doggo {count}")
output.append(str(labels))
# check MIDs
response = kgapi.entities().search(ids=mids).execute()
results = [resp["result"] for resp in response["itemListElement"]]
breed = None
for item in results:
if "description" in item.keys() and item["description"] == "Dog breed":
breed = item["name"]
continue
if breed:
output.append(f"Breed: {breed}\n")
else:
output.append("Breed not detected in labels.\n")
return "<br>".join(output)