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 :

Aide Python ( pour le bac )


Sujet :

Python

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut Aide Python ( pour le bac )
    Bonjour à tous ! Comme projet bac en ISN j'ai créé un logiciel de retouche photo ( assez modeste ), mais il y a certaines procédures sur lesquelles j'ai été aidée et que je ne comprends pas totalement. Je passe mon oral demain ( avec une semaine d'avance ! ) donc j'aurais besoin de votre aide car je vais devoir expliquer tout mon programme. Merci d'avance !

    J'ai créé une procédure permettant de faire un filtre sépia sur une photo mais je ne comprends pas bien cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    for i in range (0, largeur, 1):
            for j in range (0, hauteur, 1):
                p = imageEnMemoire.getpixel((i, j)) # On retourne les valeurs du pixel de l'image en mémoire de coordonnée i,j
                R = (25756 * p[0] + 50397 * p[1] + 12386 * p[2]) >> 16
                G = (22872 * p[0] + 44958 * p[1] + 11010 * p[2]) >> 16
                B = (17826 * p[0] + 34996 * p[1] + 8585 * p[2]) >> 16  # Pour ces 3 commandes on recalcule une nouvelle valeur de R, G et B permettant la couleur sépa
     
                if R < 0: R = 0
                if R > 255: R = 255
     
                if G < 0: G = 0
                if G > 255: G = 255
     
                if B < 0: B = 0
                if B > 255: B = 255 # Pour ces 3 commandes on vérifie si pour les 3 nouvelles valeurs de R, G et B on doit mettre la valeur à 0 ou à 250
     
                imageTemporaire.putpixel ((i, j),(R, G, B))


    Une autre procédure permet de faire de la stéganographie (cacher une image dans une autre) mais je ne comprends pas bien cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in range(l):
                for j in range(h):
                    (r1, g1, b1) = imageEnMemoire.getpixel((i, j))  # Acquisition des pixels de la première image
                    (r2, g2, b2) = imageEnMemoire1.getpixel((i, j))  # Acquisition des pixels de la seconde image
                    (r3, g3, b3) = ((r2//16)*16 + r1//16, (g2//16)*16 + g1//16, (b2//16)*16 + b1//16)  # Prépare l'image où la première est cachée dans la seconde
                    imageTemporaire.putpixel((i, j), (r3, g3, b3))  # Création de l'image sténographiée pixel par pixel



    Et j'ai une partie permettant de créer une bordure autour de la photo, j'aurais voulu savoir si cette partie ne sert qu'à créer la bordure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    for j in range (hauteur) :
            for i in range (largeur) :
                p = imageEnMemoire.getpixel((i, j))# On retourne les valeurs du pixel de l'image en mémoire de coordonnée i,j
                imageTemporaire.putpixel((i+bord, j+bord), p)
     
        for j in range (bord) :
            for i in range (nouvelleLargeur) :
                imageTemporaire.putpixel((i, j), pixelbord)
     
        for j in range (hauteur+bord, nouvelleHauteur) :
            for i in range(nouvelleLargeur) :
                imageTemporaire.putpixel((i, j), pixelbord)
     
        for i in range (bord) :
            for j in range (nouvelleHauteur) :
                imageTemporaire.putpixel((i, j), pixelbord)
     
     
        for i in range (largeur+bord, nouvelleLargeur) :
            for j in range (nouvelleHauteur) :
                imageTemporaire.putpixel((i, j), pixelbord)  # Ces fonctions créent la bordure autour de l'image




    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par HobbitBourg Voir le message
    Bonjour à tous ! Comme projet bac en ISN j'ai créé un logiciel de retouche photo ( assez modeste ), mais il y a certaines procédures sur lesquelles j'ai été aidée et que je ne comprends pas totalement. Je passe mon oral demain ( avec une semaine d'avance ! ) donc j'aurais besoin de votre aide car je vais devoir expliquer tout mon programme. Merci d'avance !

    J'ai créé une procédure permettant de faire un filtre sépia sur une photo mais je ne comprends pas bien cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    for i in range (0, largeur, 1):
            for j in range (0, hauteur, 1):
                p = imageEnMemoire.getpixel((i, j)) # On retourne les valeurs du pixel de l'image en mémoire de coordonnée i,j
                R = (25756 * p[0] + 50397 * p[1] + 12386 * p[2]) >> 16
                G = (22872 * p[0] + 44958 * p[1] + 11010 * p[2]) >> 16
                B = (17826 * p[0] + 34996 * p[1] + 8585 * p[2]) >> 16  # Pour ces 3 commandes on recalcule une nouvelle valeur de R, G et B permettant la couleur sépa
     
                if R < 0: R = 0
                if R > 255: R = 255
     
                if G < 0: G = 0
                if G > 255: G = 255
     
                if B < 0: B = 0
                if B > 255: B = 255 # Pour ces 3 commandes on vérifie si pour les 3 nouvelles valeurs de R, G et B on doit mettre la valeur à 0 ou à 250
     
                imageTemporaire.putpixel ((i, j),(R, G, B))


    Une autre procédure permet de faire de la stéganographie (cacher une image dans une autre) mais je ne comprends pas bien cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in range(l):
                for j in range(h):
                    (r1, g1, b1) = imageEnMemoire.getpixel((i, j))  # Acquisition des pixels de la première image
                    (r2, g2, b2) = imageEnMemoire1.getpixel((i, j))  # Acquisition des pixels de la seconde image
                    (r3, g3, b3) = ((r2//16)*16 + r1//16, (g2//16)*16 + g1//16, (b2//16)*16 + b1//16)  # Prépare l'image où la première est cachée dans la seconde
                    imageTemporaire.putpixel((i, j), (r3, g3, b3))  # Création de l'image sténographiée pixel par pixel



    Et j'ai une partie permettant de créer une bordure autour de la photo, j'aurais voulu savoir si cette partie ne sert qu'à créer la bordure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    for j in range (hauteur) :
            for i in range (largeur) :
                p = imageEnMemoire.getpixel((i, j))# On retourne les valeurs du pixel de l'image en mémoire de coordonnée i,j
                imageTemporaire.putpixel((i+bord, j+bord), p)
     
        for j in range (bord) :
            for i in range (nouvelleLargeur) :
                imageTemporaire.putpixel((i, j), pixelbord)
     
        for j in range (hauteur+bord, nouvelleHauteur) :
            for i in range(nouvelleLargeur) :
                imageTemporaire.putpixel((i, j), pixelbord)
     
        for i in range (bord) :
            for j in range (nouvelleHauteur) :
                imageTemporaire.putpixel((i, j), pixelbord)
     
     
        for i in range (largeur+bord, nouvelleLargeur) :
            for j in range (nouvelleHauteur) :
                imageTemporaire.putpixel((i, j), pixelbord)  # Ces fonctions créent la bordure autour de l'image




    Merci !
    Bonjour,

    Merci de commenter les lignes de code que vous comprenez afin que nous puissions voir les lignes que vous ne comprenez pas.

    Commenter une ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # ceci est un commentaire
    # il se place au-dessus de la ligne à commenter
    couleur = "red" # ou dans sa continuité
    @+.

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut
    Bonjour, je vais préciser les parties que je ne comprends pas alors ce sera plus clair.

    Dans le sépia, je ne comprends pas ces 3 calculs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    R = (25756 * p[0] + 50397 * p[1] + 12386 * p[2]) >> 16
    G = (22872 * p[0] + 44958 * p[1] + 11010 * p[2]) >> 16
    B = (17826 * p[0] + 34996 * p[1] + 8585 * p[2]) >> 16

    Et pour la stéganographie, ce sont ces calculs que je ne comprends pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (r3, g3, b3) = ((r2//16)*16 + r1//16, (g2//16)*16 + g1//16, (b2//16)*16 + b1//16)  # Prépare l'image où la première est cachée dans la seconde
    imageTemporaire.putpixel((i, j), (r3, g3, b3))

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par HobbitBourg Voir le message
    Bonjour, je vais préciser les parties que je ne comprends pas alors ce sera plus clair.

    Dans le sépia, je ne comprends pas ces 3 calculs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    R = (25756 * p[0] + 50397 * p[1] + 12386 * p[2]) >> 16
    G = (22872 * p[0] + 44958 * p[1] + 11010 * p[2]) >> 16
    B = (17826 * p[0] + 34996 * p[1] + 8585 * p[2]) >> 16
    Hum, ça ressemble à un bitwise rshift de 16 bits d'une somme pondérée.

    Je ne vois pas trop l'intérêt du truc : http://effbot.org/zone/pil-sepia.htm

    et http://www.developpez.net/forums/d14...-filtre-sepia/

    Et pour la stéganographie, ce sont ces calculs que je ne comprends pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (r3, g3, b3) = ((r2//16)*16 + r1//16, (g2//16)*16 + g1//16, (b2//16)*16 + b1//16)  # Prépare l'image où la première est cachée dans la seconde
    imageTemporaire.putpixel((i, j), (r3, g3, b3))
    un mauvais masquage binaire, ce truc, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    composante = lambda x1, x2: ((x1 >> 4) | (x2 & 0xF0))
    r3, g3, b3 = (composante(r1, r2), composante(g1, g2), composante(b1, b2))
    @+.

Discussions similaires

  1. Demande d'aide pour extraire des données Excel à l'aide python
    Par userinfo dans le forum Général Python
    Réponses: 5
    Dernier message: 05/01/2013, 11h45
  2. [Salaire] En province pour JD Bac +5 support
    Par chaf34 dans le forum Salaires
    Réponses: 61
    Dernier message: 23/08/2005, 16h09

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