QT рисует серое изображение в псевдо-цвет (PyQt) - PullRequest
0 голосов
/ 30 мая 2018

В настоящее время у меня есть изображение (numpy), и я хочу нарисовать его в QLabel с цветом.

Подобную демонстрацию можно найти: https://matplotlib.org/users/image_tutorial.html. Matplotlib может отображать изображение с помощью imshow с картой цветов.

Теперь я могу отобразить серое изображение в QLabel, но я не знаю, как отобразить его в виде псевдоцвета.

Код, используемый для отображения серого изображения: (self.img - это то, что у меня есть):

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import numpy as np
import qimage2ndarray
class MyLabel(QLabel):
    def __init__(self):
        super(MyLabel, self).__init__()
        img = np.zeros((256,256))
        img[0:128,0:128] = 255
        self.img = img

    def paintEvent(self, QPaintEvent):
        super(MyLabel, self).paintEvent(QPaintEvent)

        QImg = qimage2ndarray.gray2qimage(self.img)

        pos = QPoint(0, 0)
        source = QRect(0, 0, 256,256)

        painter = QPainter(self)
        painter.drawPixmap(pos, QPixmap.fromImage(QImg), source)

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        layout = QHBoxLayout(self)
        self.label = MyLabel()
        layout.addWidget(self.label)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

1 Ответ

0 голосов
/ 31 мая 2018

У меня есть решение, чтобы показать серое изображение в псевдоизображении.

Во-первых, я использовал opencv для генерации псевдоизображения:

disImg = cv2.applyColorMap(img, cv2.COLORMAP_AUTUMN)

Затем преобразуем изображение в QImage:

QImg = QImage(disImg.data, disImg.shape[1], disImg.shape[0], disImg.strides[0], QImage.Format_RGB888)

Наконец, мы можем отобразить его вQLabel от drawpixmap, и весь код должен быть:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import numpy as np
import qimage2ndarray
import matplotlib.pyplot as plt
import cv2
class MyLabel(QLabel):
    def __init__(self):
        super(MyLabel, self).__init__()
        img = np.zeros((256,256),dtype=np.uint8)
        img[0:128,0:128] = 255
        img[128:255,128:255] = 128
        disImg = cv2.applyColorMap(img, cv2.COLORMAP_AUTUMN)
        QImg = QImage(disImg.data, disImg.shape[1], disImg.shape[0], disImg.strides[0], QImage.Format_RGB888)
        self.qimg = QImg

        cv2.imshow('test',disImg)
        cv2.waitKey()

    def paintEvent(self, QPaintEvent):
        super(MyLabel, self).paintEvent(QPaintEvent)

        pos = QPoint(0, 0)
        source = QRect(0, 0, 256,256)

        painter = QPainter(self)
        painter.drawPixmap(pos, QPixmap.fromImage(self.qimg), source)

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        layout = QHBoxLayout(self)
        self.resize(300,300)
        self.label = MyLabel()
        layout.addWidget(self.label)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...