Dessiner les coutour d'une image [Résolu]

Signaler
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
-
Hamster18
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
-
Bonjour, comme dit dans le titre j'aimerais tracer les contours des object d'une image en noir et blanc. Après quelque recherche j'ai trouver la fonction "PyWavelets ". J'ai "charger mon image est tout cependant le rendu n'y est pas comme vous pouver le voir sur la photo ...


Je pense que cela vient de ma qualité de l'image ... J'ai donc essayer d'augmenter la lumière les contraste ... Mais rien y fait ... Auriez-vous des idée à me proposer ?


Merci d'avance pour votre aide.
Cordialement.

2 réponses

Bonsoir,

Je ne connais pas ce module PyWavelets qui a l'air pas mal.

Mais avec le module opencv, tu auras plus de chance de trouver des exemples parlants, car il est beaucoup plus connu et utilisé.

Une page intéressante.
https://www.thepythoncode.com/article/contour-detection-opencv-python

J'ai rapidement testé ce code en utilisant ton image de gauche, en ajustant les seuils de détection, et en rectifiant ce que retourne findContours (3 valeurs au lieu de 2).
On arrive déjà à obtenir quelque chose de potable, mais qui sera sans doute à mieux ajuster aux couleurs à détecter dans ton image.

import cv2
 
image = cv2.imread('img.png')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
_, binary = cv2.threshold(gray, 48, 48, cv2.THRESH_BINARY_INV)
_, contours, __ = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
image = cv2.drawContours(image, contours, -1, (0, 255, 0), 1)
cv2.imshow("", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019

Bonsoir,

J'ai tester votre code cepandant j'ai l'erreur ; " ValueError: not enough values to unpack (expected 3, got 2)". Avez une idée du porquoi ?

Cordialement.
Bonjour,

Quel ligne du code ?
Hamster18
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
> trifou
Bonjour,
C'est la ligne 7 qui pose problème
> Hamster18
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019

Dans ce cas fais comme dans le tuto de la page, chez moi findContours retourne 3 valeurs, cela doit donc dépendre de la version d'opencv utilisé.

contours, _ = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
Hamster18
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
> trifou
D'accord merci beaucoup pour votre aide !!!