Image en binaire

Résolu
Soma1316 Messages postés 36 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

Je veux convertir l'image en binaire, mais le code n'a pas fonctionné pour moi, alors quel est le problème avec ça ?

Code:

Erreur:
 

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    Chez moi, la solution proposée par jordane45 #1 ne marche malheureusement pas (en tout cas avec cette image) :

    import cv2
    (img, ret) = cv2.imread(" Copy-of-GIFShell-Exploit-1-500-×-261-px-1.gif")

    ... car j'obtiens :

    [ WARN:0@30.402] global ./modules/imgcodecs/src/loadsave.cpp (239) findDecoder imread_(' Copy
    -of-GIFShell-Exploit-1-500-×-261-px-1.gif'): can't open/read file: check file path/integrity

    Par contre, ce que tu peux faire, c'est charger ton image avec PIL, puis en extraire les données dans un np.array :

    import numpy as np
    from PIL import Image
    
    img = Image.open("Copy-of-GIFShell-Exploit-1-500-×-261-px-1.gif")
    frame = np.asarray(img)
    print(frame.shape) # (261, 500)

    Une fois que tu as tes donnée sous forme de np.array, tu peux appliquer dessus les fonctions d'OpenCV, dont cv2.threshold.

    Exemple complet :

    mport cv2
    import numpy as np
    from PIL import Image
    
    # https://votiro.com/wp-content/uploads/2022/09/Copy-of-GIFShell-Exploit-1-500-%C3%97-261-px-1.gif
    img = Image.open("Copy-of-GIFShell-Exploit-1-500-×-261-px-1.gif")
    frame = np.asarray(img)
    print(frame)
    
    (ret, frame_bin) = cv2.threshold(frame, 20, 255, cv2.THRESH_BINARY)
    assert ret
    print(frame_bin)
    cv2.imshow("Binarisation", frame_bin)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    Bonne chance

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       

      Je ne suis pas certain que tu aies regardé la réponse adaptée...

      Le souci venant du fait que tu utilises un gif..

      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         

        Bonjour jordane45,

        Oui, j'ai regardé. Et le problème est que le lien que tu donnes ne marche pas avec le gif que j'ai donné en exemple (et je pense avec aucun gif). Ça dépend peut-être de la version d'OpenCV (j'utilise le paquet standard sur une Debian récente), donc si j'ai le problème, je ne pense pas être un cas isolé. La méthode que je préconise fonctionne quant à elle correctement.

        0
      2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention  
         

        Je vérifierai ce soir ou demain, mais il me semble que dans l'ensemble de la discussion le point est justement abordé concernant l'utilisation des gif...

        En effet, de base, ce format n'est pas supporté pour faire ce que tu veux un code est donné dans cette discussion qui montre une éventuelle possibilité de contourner le souci.

        0
      3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         

        La discussion que tu pointes cherche effectivement à trouver comment ouvrir un gif avec OpenCV mais la solution qu'ils proposent ne fonctionne pas.

        0