def get_breeds()

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)