find_circles.py

# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple de détection de cercles
#
# Cet exemple montre comment détecter des cercles dans l'image à l'aide de la transformée
# de Hough. https://en.wikipedia.org/wiki/Circle_Hough_Transform
#
# Notez que la méthode find_circles() ne trouvera que les cercles entièrement
# à l'intérieur de l'image. Les cercles qui débordent de l'image/ROI sont ignorés...

import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # les niveaux de gris sont plus rapides
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

while True:
    clock.tick()
    img = csi0.snapshot().lens_corr(1.8)

    # Les objets Circle ont quatre valeurs : x, y, r (rayon) et magnitude. La
    # magnitude est la force de la détection du cercle. Plus elle est élevée,
    # meilleure elle est...

    # `threshold` contrôle le nombre de cercles trouvés. Augmentez sa valeur
    # pour diminuer le nombre de cercles détectés...

    # `x_margin`, `y_margin` et `r_margin` contrôlent la fusion des cercles
    # similaires dans les directions x, y et r (rayon).

    # r_min, r_max et r_step contrôlent quels rayons de cercles sont testés.
    # Réduire le nombre de rayons de cercles testés apporte un gain de performance important.

    for c in img.find_circles(
        threshold=2000,
        x_margin=10,
        y_margin=10,
        r_margin=10,
        r_min=2,
        r_max=100,
        r_step=2,
    ):
        img.draw_circle(c, color=(255, 0, 0))
        print(c)

    print("FPS %f" % clock.fps())

results matching ""

    No results matching ""