在 qt 应用程序中显示 skimage 输出
Show skimage output in qt application
我正在使用 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 之外(我只想将其保存在内存中),所以我想它需要 'baked out' 这样 Qt 就可以将其作为通用格式读取.
我该怎么做?
您可以按如下方式将 uint8 numpy 数组(形状 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)
我正在使用 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 之外(我只想将其保存在内存中),所以我想它需要 'baked out' 这样 Qt 就可以将其作为通用格式读取.
我该怎么做?
您可以按如下方式将 uint8 numpy 数组(形状 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)