Dessiner les coutour d'une image

Résolu
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -  
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

2 réponses

trifou
 
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()
0
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
trifou
 
Bonjour,

Quel ligne du code ?
0
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   > trifou
 
Bonjour,
C'est la ligne 7 qui pose problème
0
trifou > Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention  
 
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)
0
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   > trifou
 
D'accord merci beaucoup pour votre aide !!!
0