Я пытаюсь отобразить массивный массив RGB в ImageView () (или аналогичном) в Dock в pyqtgraph.
Общая идея выглядит примерно так:
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
from pyqtgraph.dockarea import Dock, DockArea
class SimDock(Dock):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
#self.im1 = pg.image()
self.im1 = pg.ImageView()
self.im1.setImage(np.random.normal(size=(100, 100, 3)))
self.addWidget(self.im1, row=0, col=0)
self.im1.ui.histogram.hide()
self.im1.ui.menuBtn.hide()
self.im1.ui.roiBtn.hide()
app = QtGui.QApplication([])
win = QtGui.QMainWindow()
area = DockArea()
win.setCentralWidget(area)
win.resize(1500, 800)
win.setWindowTitle('pyqtgraph example: dockarea')
simdock = SimDock("Similar Images", size=(500, 500))
area.addDock(simdock, 'right')
win.show()
# Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
app.instance().exec_()
Однако, когда я запускаю вышеописанное, я получаю:
ValueError: could not broadcast input array from shape (100,100,3) into shape (100,100)
Когда я переключаю self.im1
на pg.image
вместо pg.ImageView
, тогда в доке появляется изображение RGB, но я получаювторое пустое окно (которое, я полагаю, происходит от pg.image()
).
Исходя из этого вопроса , ImageView может принимать (M, N, 3) RGB-данные, но я могу 'Похоже, он не отображает RGB-изображение в виджете без появления второго окна.