How to count objectsΒΆ

Here is the code for counting objects while the deepSORT algorithm is running

In the main while True: loop:

# loop through objects and use class index to get class name, allow only classes in allowed_classes list
names = []
deleted_indx = []
for i in range(num_objects):
    class_indx = int(classes[i])
    class_name = class_names[class_indx]
    if class_name not in allowed_classes:
        deleted_indx.append(i)
    else:
        names.append(class_name)
names = np.array(names)
count = len(names)

if FLAGS.count:
    if by_class:
        objs = dict(Counter(names))
        for key, value in objs.items():
            if key == "bench" or key == "bus" or key == "wine glass" or key == "sandwich" or key == "toothbrush":
                cv2.putText(frame, "{}es detected: {}".format(
                    key, value), (indent, offset), font, font_size, red, font_thickness)
                print("Number of {}es: {}".format(key, value))
            elif key == "sheep" or key == "skis" or key == "scissors":
                cv2.putText(frame, "{} detected: {}".format(
                    key, value), (indent, offset), font, font_size, red, font_thickness)
                print("Number of {}: {}".format(key, value))
            elif key == "knife":
                cv2.putText(frame, "knives detected: {}".format(
                    value), (indent, offset), font, font_size, red, font_thickness)
                print("Number of knives: ", value)
            elif key == "mouse":
                cv2.putText(frame, "mice detected: {}".format(
                    value), (indent, offset), font, font_size, red, font_thickness)
                print("Number of mice: ", value)
            elif key == "person":
                cv2.putText(frame, "people detected: {}".format(
                    value), (indent, offset), font, font_size, blue, font_thickness)
                print("Number of people: ", value)
            else:
                print("Number of {}s: {}".format(key, value))
                cv2.putText(frame, "{}s detected: {}".format(
                    key, value), (indent, offset), font, font_size, red, font_thickness)
            offset += 40
    else:
        cv2.putText(frame, "Objects being tracked: {}".format(
            count), (indent, offset), font, font_size, red, font_thickness)
        print("Objects being tracked: {}".format(count))