我正在使用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可以把它看作一种通用格式。
我该怎么做?
答案 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)