Bonjour
Pour commencer, je suis totalement débutant dans l’utilisation d’OpenCV. J’ai une image de départ, le but c’est de détecter les différents trou et de les découper pour avoir des images séparée de chaque trou.
J’arrive déjà à bien repérer les trous comme le montre cette image, sauf que je vois pas trop comment nettoyer les autres cercles que je détecte.
J’ai essayé de tracer une droite qui passe par le centre de chaque points et si j’ai 6 points sur la droite les cercles sont bien les bon, mais je n’arrive pas vraiment au bon résultat (en fonction de comment je tourne le plateau). Je me suis dit que je pourrais détecter la ligne au milieu (je n’ai pas encore essayé) mais ca me bloquerais à ce plateau en particulier.
Peut être qu’il y a aussi une formule de math pour faire un rectangle ou faire une droite imaginaire ? Je suis un peu dépassé par mon niveau de math.
Bout de code pour l’instant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import numpy as np import cv2 image = cv2.imread('image.png') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cimg = cv2.medianBlur(gray, 5) circles = cv2.HoughCircles(cimg, cv2.HOUGH_GRADIENT, 2, 100, param1=50, param2=30, minRadius=40, maxRadius=55) circles = np.round(circles[0, :]).astype("int") for (x, y, r) in circles: cv2.circle(image, (x, y), r, (0, 255, 0), 2) cv2.circle(image, (x, y), 2, (0, 0, 255), 3) cv2.imshow("output transform", image) cv2.waitKey(0) ` |
Si vous avez des idées ou un bout de code ça me va
Merci d’avance