IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Modification de Pixels dans un espace d'une image [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 6
    Par défaut Modification de Pixels dans un espace d'une image
    Bonjour à tous, je voudrais savoir comment modifier la couleur de tout pixel à l'intérieur d'un intervalle [a,b] où a et b sont des points de coordonnées d'une image.

    Par exemple, ici j'aimerais changer tous les pixels dans [a,b] en blanc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    '''INITIALISATION DE L'IMAGE'''
     
    im = Image.open("/home/jooker/Bureau/Appli/images/scan01.png")
    pixels = im.load()
     
    '''SUPPRESSION TEXTE ORIGINAL'''
     
    (largeur, hauteur) = im.size
     
    for x in range(largeur):            #parcours toutes colonnes
        for y in range(hauteur):       #parcours toutes lignes
    Après parcourir toute l'image avec les 2 boucles, j'ai essayé plusieurs méthodes mais aucunes ne fonctionnent, je demande alors si vous savez comment faire ?

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Une petite recherche sur le net permettrait d'avancer pas mal...

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 670
    Par défaut
    Salut,

    Citation Envoyé par Jooker188 Voir le message
    je demande alors si vous savez comment faire ?
    On ouvre la documentation de la bibliothèque qui définit Image pour y chercher une "method" qui permette de modifier tout un "intervalle" et s'il n'y en a pas celles qui permette de modifier un pixel.

    Puis on écrit quelques lignes de code pour s'assurer qu'on arrive bien à faire fonctionner ces "method"s. Si ce n'est pas le cas, on cherche un peu sur Internet...

    Enfin, dans les cas désespéré on vient poster ici ce qu'on a essayé de faire et demander de l'aide.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 6
    Par défaut
    Bonjour, tout d'abord merci de m'avoir répondu aussi rapidement.
    Je crois que je me suis mal exprimé, quand je vous demandais si vous saviez comment faire, ce n'est pas parce que je n'ai pas cherché, c'est parce que j'ai réellement besoin d'aide car je ne trouve pas la "method" justement.
    Je ne vous ai pas mis mes différentes expérimentations, et je m'en excuse, tenez voici une de mes piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    im = Image.open("/home/jooker/Bureau/Appli/images/scan01.png")
    pixels = im.load()
     
    p_haut_gauche = pixels[50,50]
    p_bas_droit = pixels[150,150]
    surface = [p_haut_gauche , p_bas_droit]
    largeur,hauteur = surface
     
    for x in range(largeur):   #parcours toutes colonnes
    	for y in range(hauteur): #parcours toutes lignes
    			im.putpixel((x,y),(255,0,0))
    Je sais très bien comment modifier la couleur d'un pixel par (.putpixel() ou juste image[x,y] = (r,g,b)), ce que je ne trouve pas cependant c'est agir dans un intervalle dans l'image. Je parle d'intervalle de coordonnées et non intervalle de couleurs, en effet toutes mes recherches sur internet concernant les intervalles portent sur les couleurs..
    J'ai alors pensé a créer un intervalle allant du point en haut a gauche jusqu'au point en bas à droite de la surface que je désire modifier. Mais je n'arrive pas a l'écrire correctement en python (ou alors c'est juste une mauvaise approche). J'ai aussi procédé comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    largeur,hauteur = im.size	
     
    for x in range(largeur):   #parcours toutes colonnes
    	for y in range(hauteur): #parcours toutes lignes
    		if x or y in surface:
    			im.putpixel((x,y),(255,0,0))
    Mais peu concluant..
    Je vous demande alors si vous pouvez me mettre sur la piste pour mettre en place ce fameux intervalle ?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 670
    Par défaut
    Citation Envoyé par Jooker188 Voir le message
    J'ai alors pensé a créer un intervalle allant du point en haut a gauche jusqu'au point en bas à droite de la surface que je désire modifier.
    Un intervalle est dans un espace 1D.
    Une image à au moins 2 dimensions. Donc on va avoir une région rectangulaire délimitée par la position du point en haut à gauche et celle du point en bas à droite.

    Citation Envoyé par Jooker188 Voir le message
    c'est parce que j'ai réellement besoin d'aide car je ne trouve pas la "method" justement.
    Ouvrez la documentation et lisez ce que çà raconte sur paste.

    note: si vous le faites point par point via putpixel vous avez la method à utiliser pour modifier l'image mais vous ne savez pas écrire une boucle qui va de x0 a x1 et de y0 a y1... Pour apprendre à utiliser des constructions de base, la méthode c'est ouvrir un tuto.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 6
    Par défaut
    Merci énormément wiztricks !
    C'est bien .paste() qu'il faut employer, il n'y a même pas besoin de faire de boucles.
    Cependant, comment procéder pour "coller' les pixels en forme de rond et non rectangulaire ?

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 670
    Par défaut
    Citation Envoyé par Jooker188 Voir le message
    Cependant, comment procéder pour "coller' les pixels en forme de rond et non rectangulaire ?
    C'est un autre sujet puisqu'on ne parle plus d'intervalle ou de région.

    Un rond n'est pas une image puisqu'une image est une chose qui remplit une région rectangulaire (pouvant contenir un "disque" ou un "cercle".
    Donc si j'ai une image qui contient un "disque" et que je ne veux pas coller les "bords" de ce disque, je peut rendre les pixels de ces "bords" transparents.

    Une autre méthode est de dessiner un disque via ImageDraw.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 6
    Par défaut
    Super merci !!
    Je mets en résolu la discussion.
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] calcul nombre pixels dans chaque angle d'une cercle trigonométrique
    Par rabaamohamed dans le forum Images
    Réponses: 2
    Dernier message: 18/07/2016, 10h05
  2. Dérivée dans l'espace d'une surface
    Par gregowy dans le forum MATLAB
    Réponses: 0
    Dernier message: 04/05/2014, 20h41
  3. [Tableaux] variable dans la source d'une image
    Par theotaki dans le forum Langage
    Réponses: 3
    Dernier message: 12/04/2007, 23h33
  4. Réponses: 2
    Dernier message: 10/12/2006, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo