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 :

Etirer une image avec matplotlib


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut Etirer une image avec matplotlib
    Bonjour,

    J'ai une image d'un terrain de foot dans un plot mais comme vous pouvez le voir elle est "carrée". J'aimerai la rendre plus rectangle et donc l'étirer en largeur mais j'ai essayé pleins de méthodes et je n'y arrive pas... Avez-vous des idées ?

    Je ne peux mettre que cette partie de code :Nom : Pic.PNG
Affichages : 720
Taille : 284,7 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class MatplotlibWidget(Canvas):
        def __init__(self, parent=None, title='Title', xlabel='x label', ylabel='y label', dpi=100, hold=False):
            super(MatplotlibWidget, self).__init__(Figure())
            self.setParent(parent)
            self.figure = Figure(figsize=(130,100),dpi=dpi)
            self.canvas = Canvas(self.figure)
            self.theplot = self.figure.add_subplot(111)
            self.theplot.set_ylim(-3,103)
            self.theplot.set_xlim(-5,110)  
            self.theplot.imshow(img,extent=[-6,111,-4,104])
    Merci!

  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
    Si l'image est carrée au départ, à part la découper, cela va être compliqué de la rendre rectangulaire.
    Elle est comment cette image ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut
    L’image est bien rectangle à la base

  4. #4
    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
    Par exemple, avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    image = mpimg.imread("einstein1-code.png")
    plt.imshow(image)
    plt.show()

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut
    Oui mais je veux que mon image soit dans un plot pour garder les coordonnées comme vous pouvez le voir sur mon image dans mon premier message car c'est dans une fenêtre PyQt5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fn = os.path.join(os.path.dirname(__file__), 'Datas\Images\Field.png')
    img=matplotlib.image.imread(fn)
     
    class MatplotlibWidget(Canvas):
        def __init__(self, parent=None, title='Title', xlabel='x label', ylabel='y label', dpi=100, hold=False):
            super(MatplotlibWidget, self).__init__(Figure())
            self.setParent(parent)
            self.figure = Figure(figsize=(130,100),dpi=dpi)
            self.canvas = Canvas(self.figure)
            self.theplot = self.figure.add_subplot(111)
            self.theplot.set_ylim(-3,103)
            self.theplot.set_xlim(-5,110)  
            self.theplot.imshow(img,extent=[-6,111,-4,104])

  6. #6
    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
    Le programme est supposé fonctionner comme cela ou il faut deviner ce qui va autour ?

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    matplotlib ouvre une petite fenêtre carrée par défaut, mais si je zoom en cliquant sur l'icône d'agrandissement Window, l'image s'ouvre plein écran, taille rectangulaire. Cela ne fonctionne pas chez vous ?

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut
    Du coup voici le code en entier pour que vous puissiez mieux tester.
    Mais je n'ai pas de zoom dans ma fenêtre moi :/

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    from PyQt5 import QtCore, QtGui, QtWidgets, QtMultimedia, QtMultimediaWidgets, uic
    from PyQt5.QtWidgets import QApplication, QSizePolicy,QGridLayout,QHBoxLayout, QVBoxLayout, QInputDialog, QLineEdit, QDialog, QSlider, QStyle, QWidget, QLabel, QToolButton
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvas
    from PyQt5.QtCore import QDir, Qt, QUrl, QSize
    import matplotlib,sys,os
    import matplotlib.figure
    from matplotlib.figure import Figure
     
    fn = os.path.join(os.path.dirname(__file__), 'Datas\Images\Field.png')
    img=matplotlib.image.imread(fn)
     
    class MatplotlibWidget(Canvas):
        def __init__(self, parent=None, title='Title', xlabel='x label', ylabel='y label', dpi=100, hold=False):
            super(MatplotlibWidget, self).__init__(Figure())
            self.setParent(parent)
            self.figure = Figure(figsize=(130,100),dpi=dpi)
            self.canvas = Canvas(self.figure)
            self.theplot = self.figure.add_subplot(111)
            self.theplot.set_ylim(-3,103)
            self.theplot.set_xlim(-5,110)  
            self.theplot.imshow(img,extent=[-6,111,-4,104])
     
     
    class Ui_IBE(object):
        def setupUi(self, IBE):
            #Recuperation de la résolution de l'écran et calcul des coeff d'ajustement de la résolution
            Get_width = QApplication.desktop().width()
            Get_height = QApplication.desktop().height()
            Width_Ref = 1366
            Height_Ref = 768
            Coeff_w = Get_width/Width_Ref
            Coeff_h = Get_height/Height_Ref
            fontsizer=8
            #Creation de la fenetre principale
            IBE.setObjectName("IBE")
            IBE.resize(Get_width, Get_height)
    		#color background
            p = IBE.palette()
            p.setColor(IBE.backgroundRole(), Qt.white)
            IBE.setPalette(p)
     
            ############# Image terrain de foot ###############
            font = QtGui.QFont()
            font.setPointSize(fontsizer)
            self.mplwidget = MatplotlibWidget(IBE)
            self.mplwidget.setGeometry(QtCore.QRect(-40*Coeff_w, 225*Coeff_h, 850*Coeff_w, 500*Coeff_h))
            self.mplwidget.setObjectName("mplwidget")
     
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
     
    if __name__ == "__main__":
        import sys,os,screeninfo
        app = QtWidgets.QApplication(sys.argv)
        IBE = QtWidgets.QDialog()
        ui = Ui_IBE()
        ui.setupUi(IBE)
        IBE.show()
        sys.exit(app.exec_())

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Pour obtenir une ouverture plein écran sur Window :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mng = plt.get_current_fig_manager()
    mng.window.state('zoomed') # ouverture plein écran sur Window
    plt.show()

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut
    Merci pour cette petite aide danielhagnoul mais si tu essaies de lançer mon programme précédent, tu devrais avoir le terrain en bas à gauche. C'est à cette position que je veux le garder tout en étirant l'image sur les côtés... Je sais pas si je m'exprime bien

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut
    Re!
    En changeant le 6 par 111 dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.theplot.imshow(img,extent=[-6,111,-4,104])
    , j'obtiens bien la forme que je souhaite mais l'axe x varie de -100 à +100 alors que je voudrais de 0 à 100.
    Peut-être que c'est plus simple à gérer! Qui aurait une idée ?

Discussions similaires

  1. Recuperation de la taille d'une image avec la propriété SRC
    Par CDRIK dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/10/2004, 03h05
  2. [Image]Créer une image avec JAVA 1.1
    Par burno dans le forum 2D
    Réponses: 4
    Dernier message: 11/08/2004, 09h19
  3. Afficher une image avec swing
    Par arnonote dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 07/08/2004, 12h10
  4. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58
  5. PL/SQL - Comment afficher une image avec HTP ?
    Par patmaba dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/07/2004, 09h28

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