import sensor, image, time
# Fonction pour calculer la distance à partir de la taille de l'objet détecté
def calculate_distance(size):
# La taille de l'objet dépend de sa distance à la caméra et de la focale de la caméra
focal_length = 650 # Focale de la caméra en pixels (à adapter en fonction de votre caméra)
known_diameter = 2.0 # Diamètre de la boule en mètres (à adapter en fonction de la taille réelle de votre boule)
known_distance = 50 # Distance de référence à laquelle le diamètre est connu en centimètres
distance = (known_diameter * focal_length) / size
return distance
# Initialisation de la caméra
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
while True:
# Capture d'une image
img = sensor.snapshot()
# Convertir l'image en niveaux de gris
img_gray = img.to_grayscale()
# Appliquer un seuillage pour détecter les bords
img_thresh = img_gray.binary([(200, 255)]) # Vous pouvez ajuster ces valeurs selon votre environnement d'éclairage
# Trouver les régions d'intérêt (blobs) dans l'image
blobs = img_thresh.find_blobs()
for blob in blobs:
# Si le blob a une taille suffisante, considérer qu'il s'agit d'une boule
if blob.pixels() >= 8:
# Trouver le centre du blob
cx = blob.cx()
cy = blob.cy()
# Calculer la taille du blob en pixels
size = blob.w() * blob.h() # On calcule la taille du blob en multipliant sa largeur par sa hauteur
# Calculer la distance à partir de la taille de l'objet
distance = calculate_distance(size)
# Dessiner le contour de l'objet et afficher la distance
img.draw_rectangle(blob.rect(), color=(255, 0, 0)) # Dessiner un rectangle autour du blob
# Afficher la distance
text_x = cx - 20 # Décalage en x pour positionner le texte
text_y = cy + 10 # Décalage en y pour positionner le texte
img.draw_string(text_x, text_y, "%.2f cm" % distance, color=(255, 255, 255))
# Afficher l'image
img.show()
dans ce programme j’ai un problème ligne 30 avec la fonction blob j’aimerais savoir si quelqu’un a une idée le but étant de calculer la distance entre la boule et l