PyQtGraph - Automatisch Passen Sie die Größe der Bildansicht an
In diesem Artikel erfahren Sie, wie Sie die Größe des Bildansichtsobjekts in PyQTGaph automatisch anpassen können. PyQtGraph ist eine Grafik- und Benutzeroberflächenbibliothek für Python, die Funktionen bietet, die üblicherweise für das Entwerfen und für wissenschaftliche Anwendungen erforderlich sind. Hauptziel ist die Bereitstellung schneller, interaktiver Grafiken für die Anzeige von Daten (Diagramme, Videos usw.). Widget zur Anzeige und Analyse von Bilddaten. Implementiert viele Funktionen wie die Anzeige von 2D- und 3D-Bilddaten. Bei 3D-Daten wird ein Schieberegler für die Z-Achse angezeigt, mit dem der Benutzer auswählen kann, welcher Frame angezeigt werden soll. Zeigt ein Histogramm der Bilddaten mit einem beweglichen Bereich an, der die Dunkel- / Lichtpegel definiert. Der bearbeitbare Verlauf bietet eine Farbnachschlagetabelle. Durch die automatische Anpassung wird die Größe der Bildansicht entsprechend dem Inhalt geändert. Die neue Größe richtet sich nach der Größe des Inhalts.
Mit Hilfe des folgenden Befehls können wir eine Bildansicht erstellen
# Erstellen eines Pyqtgraph-Bildansichtsobjekts imv = pg.ImageView()
Syntax: ImageView (Eltern = Keine, Name = 'ImageView', Ansicht = Keine, imageItem = Keine, levelMode = 'Mono', * Argumente)
Parameter:
- parent (QWidget): Gibt das übergeordnete Widget an, zu dem diese ImageView gehört. Wenn Keine, wird die ImageView ohne übergeordnetes Element erstellt.
- name (str): Der Name, mit dem sowohl die interne ViewBox als auch das PlotItem registriert werden, mit dem die ROI-Daten angezeigt werden.
- view (ViewBox oder PlotItem): Wenn angegeben, wird dies als Anzeigebereich verwendet, der das angezeigte Bild enthält.
- imageItem (ImageItem): Wenn angegeben, wird dieses Objekt zum Anzeigen des Bildes verwendet. Muss eine Instanz von ImageItem oder einem anderen kompatiblen Objekt sein.
- levelMode: Gibt das Argument * levelMode * an
Rückgabe : Objekt der Klasse ImageView
Dazu verwenden wir die adjustSize() -Methode mit dem Bildansichtsobjekt
Syntax: imv.adjustSize()
Argument: Es wird kein Argument verwendet.
Return: Es wird None zurückgegeben
Unten ist die Implementierung
from
PyQt5.QtWidgets
import
*
import
sys
import
numpy as np
import
pyqtgraph as pg
from
PyQt5.QtGui
import
*
from
PyQt5.QtCore
import
*
class
ImageView(pg.ImageView):
def
__init__(
self
,
*
args,
*
*
kwargs):
pg.ImageView.__init__(
self
,
*
args,
*
*
kwargs)
class
Window(QMainWindow):
def
__init__(
self
):
super
().__init__()
self
.setWindowTitle(
"PyQtGraph"
)
self
.setGeometry(
100
,
100
,
600
,
500
)
icon
=
QIcon(
"skin.png"
)
self
.setWindowIcon(icon)
self
.UiComponents()
self
.show()
def
UiComponents(
self
):
widget
=
QWidget()
label
=
QLabel(
"Geeksforgeeks Image View"
)
label.setMinimumWidth(
130
)
label.setWordWrap(
True
)
pg.setConfigOptions(antialias
=
True
)
imv
=
ImageView()
img
=
pg.gaussianFilter(np.random.normal(size
=
(
200
,
200
)),
(
5
,
5
))
*
20
+
100
img
=
img[np.newaxis, :, :]
decay
=
np.exp(
-
np.linspace(
0
,
0.3
,
100
))[:, np.newaxis, np.newaxis]
data
=
np.random.normal(size
=
(
100
,
200
,
200
))
data
+
=
img
*
decay
data
+
=
2
sig
=
np.zeros(data.shape[
0
])
sig[
30
:]
+
=
np.exp(
-
np.linspace(
1
,
10
,
70
))
sig[
40
:]
+
=
np.exp(
-
np.linspace(
1
,
10
,
60
))
sig[
70
:]
+
=
np.exp(
-
np.linspace(
1
,
10
,
30
))
sig
=
sig[:, np.newaxis, np.newaxis]
*
3
data[:,
50
:
60
,
30
:
40
]
+
=
sig
imv.setImage(data, xvals
=
np.linspace(
1.
,
3.
, data.shape[
0
]))
colors
=
[
(
0
,
0
,
0
),
(
4
,
5
,
61
),
(
84
,
42
,
55
),
(
15
,
87
,
60
),
(
208
,
17
,
141
),
(
255
,
255
,
255
)
]
cmap
=
pg.ColorMap(pos
=
np.linspace(
0.0
,
1.0
,
6
), color
=
colors)
imv.setColorMap(cmap)
layout
=
QGridLayout()
label.setFixedWidth(
130
)
widget.setLayout(layout)
layout.addWidget(label,
1
,
0
)
layout.addWidget(imv,
0
,
1
,
3
,
1
)
self
.setCentralWidget(widget)
imv.adjustSize()
App
=
QApplication(sys.argv)
window
=
Window()
sys.exit(App.
exec
())
Ausgabe :