find_circles.py
# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Esempio di ricerca dei cerchi
#
# Questo esempio mostra come trovare i cerchi nell'immagine utilizzando la trasformata di
# Hough. https://en.wikipedia.org/wiki/Circle_Hough_Transform
#
# Nota: il metodo find_circles() troverà solo i cerchi che sono completamente
# all'interno dell'immagine. I cerchi che escono dall'immagine/ROI vengono ignorati...
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565) # la scala di grigi è più veloce
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot().lens_corr(1.8)
# Gli oggetti cerchio hanno quattro valori: x, y, r (raggio) e magnitudo. La
# magnitudo è la forza del rilevamento del cerchio. Più alta è,
# meglio è...
# `threshold` controlla quanti cerchi vengono trovati. Aumentarne il valore
# per diminuire il numero di cerchi rilevati...
# `x_margin`, `y_margin` e `r_margin` controllano l'unione dei
# cerchi simili nelle direzioni x, y e r (raggio).
# r_min, r_max e r_step controllano quali raggi di cerchi vengono testati.
# Ridurre il numero di raggi di cerchio testati offre un notevole aumento delle prestazioni.
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())