在qt应用程序中显示skimage输出

时间:2017-10-15 18:40:42

标签: python qt numpy scikit-image

我正在使用skimage通过他们的numpy操作做一些图像处理。我可以对像素进行数学运算,然后使用

显示结果
def image_manip():
    # do manipulations
    return final_image
viewer = ImageViewer(image_manip())
viewer.show()

同时,在不同的应用程序中,我可以使用以下方式在QT中显示图像:

self.pixmap = QtGui.QPixmap('ImagePath.jpg')

理想情况下,我想将两者结合成这样的东西:

def image_manip():
    # do manipulations
    return final_image

self.pixmap = QtGui.QPixmap(image_manip())

显然这不起作用。我收到错误TypeError: QPixmap(): argument 1 has unexpected type 'numpy.ndarray'

我的猜测是viewer = ImageViewer(image_manip())viewer.show()有一些魔力可以让它直接读取skimage / numpy对象。在我的用例中,我不想将文件保存在skimage中(我想将其保存在内存中),所以我认为它需要被烘焙出来'所以Qt可以把它看作一种通用格式。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以将uint8 numpy数组(shape M, N, 3 RGB图像)转换为QPixmap,如下所示:

from skimage import img_as_ubyte

arr = img_as_ubyte(arr)
img = QImage(arr.data, arr.shape[1], arr.shape[0],
             arr.strides[0], QImage.Format_RGB888)
pixmap = QPixmap.fromImage(img)