Dessiner les coutour d'une image

Résolu/Fermé
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 19 déc. 2019 à 16:40
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 22 déc. 2019 à 18:54
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

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 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
19 déc. 2019 à 22:32
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
Bonjour,

Quel ligne du code ?
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 > trifou
20 déc. 2019 à 14:54
Bonjour,
C'est la ligne 7 qui pose problème
0
trifou > Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
Modifié le 20 déc. 2019 à 15:28
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 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 > trifou
22 déc. 2019 à 18:54
D'accord merci beaucoup pour votre aide !!!
0