Skip to main content

Counting Objects

The most simple way to count objects in an image is to use our object detection [DENK Vision AI Hub].

Result


import cv2
import denk_sdk

model_paths = ["count.denk"]
device = denk_sdk.Device.CPU # or GPU1, ...
token = ""

example_image = cv2.imread("count.png", 1)


pipeline = denk_sdk.InferencePipeline(token=token, device=denk_sdk.Device.CPU)
model = pipeline.add_model(model_path)
model.post.set_confidence_filter(0.5)

results = pipeline.run(example_image).get_results()

count_per_class = {}

print()
for m in results.object_detection_models:
for cl_idx, cl in enumerate(m.classes):
count_per_class[cl.class_name] = len(cl.objects)
color = [cl.class_color.blue, cl.class_color.green, cl.class_color.red]
for class_counter, obj in enumerate(cl.objects):
text = f"{class_counter+1}.{cl.class_name}"
box = obj.bounding_box

x1 = box.top_left.x
y1 = box.top_left.y
x2 = box.bottom_right.x
y2 = box.bottom_right.y

cv2.rectangle(example_image, (x1, y1), (x2, y2), color, 4)
cv2.putText(
example_image,
text,
(x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX,
1,
color,
4,
cv2.LINE_AA,
)

print(f"{count_per_class=}")
cv2.imwrite("count_result.png", example_image)