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.

2 réponses

  1. 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
  2. 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
    1. trifou
       
      Bonjour,

      Quel ligne du code ?
      0
      1. 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
      2. 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
      3. Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   > trifou
         
        D'accord merci beaucoup pour votre aide !!!
        0