J'ai deux images binaires et j'essaie de détecter les contours des taches blanches (le contour rose dans la partie droite du collage est le résultat du contour).cv2.findContours impossible de détecter les contours
cv2.contourFind()
fonctionne très bien pour CONTOUR1:
Mais pour Contour2 c'est agir bizarre:
Voici l'appel de fonction pour elle
#Convert Image to grayscale
img = cv2.imread(file_name)
img2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY_INV)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
dilated = cv2.dilate(mask, kernel, iterations=2)
image, contours, hierarchy = cv2.findContours(dilated.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for contour in contours:
[x, y, w, h] = cv2.boundingRect(contour)
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 255), 2)
En utilisant cette variable contours
, je dessine des rectangles autour des points trouvés. Je ne comprends pas pourquoi cela fonctionne pour Contour1, mais échoue pour Contour2 quand ils sont assez similaires.
S'il vous plaît modifier votre question pour fournir un [exemple minimal, complet, vérifiable] (https://stackoverflow.com/help/mcve). –
Terminé, @AlexanderReynolds –
Combien de contours sont dans les «contours» pour chaque image? –