TL; DR: Вам нужно только прочитать раздел "Обновление".
Как вы выводите
numpy.random.random((256, 256))
в качестве цветовой схемы для qt сцена?
Это резюме резюме.
Update:
Следующее получает мне colormap, который я хочу сохранить в файл.
scaled_image = Image.fromarray(np.uint8(self.image*255))
plt.savefig("/home/test.png")
self.image
- массив 256x256 numpy, все его значения находятся в диапазоне от -1 до 1.
Как получить это изображение для вывода на сцену в Qt? Вы можете использовать self.image = numpy.random.random((256, 256))
, чтобы иметь начальную точку, похожую на меня. Как вы получаете массив двумерных numpy случайных значений на сцену pyqt в качестве цветовой карты?
Обновление 24/02/1016
Так близко. Кажется, что это работает, но масштаб был инвертирован. Синий теперь горячий, а красный - холодный. Как переключить это вокруг так, чтобы оно выглядело как изображение выше?
scene = QGraphicsScene(self)
scaled_image = Image.fromarray(np.uint8(self.image*255))
gcf().canvas.draw() # IMPORTANT!
stringBuffer = gcf().canvas.buffer_rgba() # IMPORTANT!
l, b, w, h = gcf().bbox.bounds
qImage = QtGui.QImage(stringBuffer,
w,
h,
QtGui.QImage.Format_ARGB32)
pixmap = QtGui.QPixmap.fromImage(qImage)
pixmapItem = QtGui.QGraphicsPixmapItem(pixmap)
scene.addItem(pixmapItem)
self.graphicsView.setScene(scene)
Что я пробовал 23/02/2016
Следующий экран показывает пустой экран
scene = QGraphicsScene(self)
scaled_image = Image.fromarray(np.uint8(self.image*255))
pixMap = QPixmap(scaled_image)
scene.addPixmap(pixMap)
self.graphicsView.setScene(scene)
Ниже вы получите оттенки серого, выделенные для сцены Qt. Почему это не цвет?
scene = QGraphicsScene(self)
scaled_image = Image.fromarray(np.uint8(self.image*255))
imgQ = ImageQt(scaled_image)
pixMap = QtGui.QPixmap.fromImage(imgQ)
scene.addPixmap(pixMap)
self.graphicsView.setScene(scene)
Я переделал из решений проблем с цветовой схемой здесь и отобразил изображение здесь.
Используя совет из размещенного решения, я попытался сначала создать QGraphicsPixmapItem
, а затем добавить элемент в сцену. Официальные документы были немного запутанными, поэтому я, наконец, получил то, что мне нужно, от более хрустящего pyside docs. К сожалению, я получаю те же оттенки серого, что и выше. Код ниже:
scene = QGraphicsScene(self)
scaled_image = Image.fromarray(np.uint8(self.image*255))
imgQ = ImageQt(scaled_image)
pixMap = QtGui.QPixmap.fromImage(imgQ)
pixMapItem = QtGui.QGraphicsPixmapItem(pixMap)
scene.addItem(pixMapItem)
self.graphicsView.setScene(scene)
Другие вещи, которые я пробовал (старше):
self.image
- это многомерный 2D-массив, все его значения находятся в диапазоне от -1 до 1.
Я масштабируюсь следующим образом и получаю изображение в градациях серого. Тем не менее, я хочу colourmap:
scene = QGraphicsScene(self)
scaled_image = (self.image + 1) * (255 / 2)
scene.addPixmap(QPixmap.fromImage(qimage2ndarray.array2qimage(scaled_image)))
self.graphicsView.setScene(scene)
#min(self.image) = -0.64462
#max(self.image) = 1.0
Если бы я сделал следующее, я бы получил цветовой пакет, который я хочу, например, на изображении ниже веб-приложения, которое я ранее разработал
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> imgplot = ax.imshow(self.image)
Как добавить цветную копию в сцену qt вместо того, чтобы иметь оттенки серого?