traitements d’images en Python 3

Par Sébastien Feulvarch

Voici ci-dessous un traitement d’image, passage en noir et blanc suivant un seuil, en Python3

(exemple proposé en Javascript par Frédéric Ferré :  http://icn.cpn56.fr/2016/12/filtres-photo/  )

On y trouvera les instructions pour ouvrir, sauvegarder un fichier image, afficher une image dans un canvas, récupérer et affecter une valeur à un pixel, créer et afficher des widgets tels que Scale, Button pour une IHM.

Ce code peut servir de base pour créer un mini logiciel de traitements d’images

# Librairies pour création de widgets(curseur, bouton, .....) et manipulations d'images
from tkinter import *
from PIL import Image

# fonction passant en noir et blanc avec un seuil
def NB():
    global a  
    a = int(Valeur.get()) #récupération du seuil 
    global py
    py =Image.new("RGB",(200,200)) # conteneur de l'image transformée
    # parcours des pixels l'image originale
    for x in range(largeur):
        for y in range(hauteur):
            pixels=im.getpixel((x,y))
            moy = int((pixels[0]+pixels[1]+pixels[2])/3)
            # remplacer le pixel par blanc ou noir suivant que le niveau est clair ou non
            if(moy>a):
                py.putpixel((x,y),(255,255,255))
            else:
                py.putpixel((x,y),(0,0,0))
    # affichage du résultat
    affichage(py)

# fonction affichant l'image originale et l'image transformée
def affichage(imag):
    imag.save('nb.png') # sauvegarde l'image transformée dans le fichier nb.png
    # affichage de l'image originale : MonaLisa.png
    imaorig=PhotoImage(file='MonaLisa.png')  
    can.create_image(200/2,200/2,image=imaorig)
     # affichage de l'image transformée
    imagtransf=PhotoImage(file='nb.png')
    can.create_image(5*200/2,200/2,image=imagtransf)
     # surveillance de la fenêtre
    Mafenetre.mainloop()

# création et édition des paramètres de la fenêtre contenant le canvas
Mafenetre = Tk()
Mafenetre.geometry('700x400')
can=Canvas(Mafenetre,width=1024,height=1024)
can.pack(padx=44,pady=44)
imj = Image.open('MonaLisa.png')   # ouverture du fichier MonaLisa.png
im=imj.resize((200,200))   # redimensionnement de l'image 200*200
largeur , hauteur = im.size #stockage des dimensions dans 2 variables
Valeur = StringVar()  # variable pour contenir la valeur du seuil
Valeur.set(125)  # initialisation du seuil
# Création et édition d'un widget Scale
echelle = Scale(Mafenetre,from_=0,to=255,resolution=5,orient=HORIZONTAL,length=300,width=20,label="Seuil :",tickinterval=20,variable=Valeur)
# positionnement du curseur
echelle.place(x="190",y="300")
# bouton déclenchant la transformation
bouton=Button(Mafenetre,text="Noir et Blanc",command=NB)
bouton.place(x="300",y="260")

# affichage images
affichage(imj)
 Catégorie: News ! Python

Laisser une réponse