如何设置numpy的阵列图像上使用PyQt5一个QWidget(How to set an nump

2019-09-27 05:46发布

我从我的相机读取图像作为numpy的阵列。 我的目标是把它放在一个QWidget内从pyqt5并打印在我的主窗口GUI程序,但我发现了以下错误:

TypeError: QPixmap(): argument 1 has unexpected type 'numpy.ndarray'

下面是代码:

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from epics import PV
import numpy as np

class PanoramicGUI:
    def __init__(self):
        self.MainWindow = uic.loadUi('panoramicGUI.ui')

        self.MainWindow.SavePositionButton. clicked.connect(self.save_image)

    def save_image(self):
        detectorData = PV("CAMERA:DATA")
        self.data = detectorData.get()
        self.data = np.array(self.data).reshape(2048,2048).astype(np.int32)
        print(self.data)

        img = PrintImage(QPixmap(self.data))

        self.MainWindow.WidgetHV1X1.setLayout(QtWidgets.QVBoxLayout())
        self.MainWindow.WidgetHV1X1.layout().addWidget(img)

class PrintImage(QWidget):
    def __init__(self, pixmap, parent=None):
        QWidget.__init__(self, parent=parent)
        self.pixmap = pixmap

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(self.rect(), self.pixmap)

if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)
    panoramic = PanoramicGUI()
    panoramic.MainWindow.show()
    app.exec_()

有人能帮我吗?

问候,

加布里埃尔。

Answer 1:

有多种方法去了解这一点。

一种选择是从磁盘通过提供文件路径直接加载图像。 所以,你必须img = PrintImage(QPixmap(FILE_PATH))其中FILE_PATH是一些字符串而不是numpy的阵列。 对于一个更完整的例子请访问以下链接: https://www.tutorialspoint.com/pyqt/pyqt_qpixmap_class.htm

如果你真的想用numpy的阵列来处理它,那么你需要创建一个QtGui.QImage()第一个对象,并传递到您的QtGui.QPixmap()直接对象,而不是一个numpy的阵列。 每文档QtGui.QImage()您需要设置数据的格式,如果它是不是已经在可识别的格式由QtGui.QImage() 所以下面应该工作:

#Initialze QtGui.QImage() with arguments data, height, width, and QImage.Format
self.data = np.array(self.data).reshape(2048,2048).astype(np.int32)
qimage = QtGui.QImage(self.data, self.data.shape[0],self.data.shape[1],QtGui.QImage.Format_RGB32)
img = PrintImage(QPixmap(qimage))

对于最后一个参数QtGui.QImage()可以改变到你想要从这里的文件列表中http://srinikom.github.io/pyside-docs/PySide/QtGui/QImage.html#PySide.QtGui.PySide .QtGui.QImage.Format

这最后一个环节是在一般的一切事物真的很好QtGui有关。



文章来源: How to set an numpy array image on a QWidget using PyQt5