在 qt 应用程序中显示 skimage 输出
Posted
技术标签:
【中文标题】在 qt 应用程序中显示 skimage 输出【英文标题】:Show skimage output in qt application 【发布时间】:2017-10-15 18:40:42 【问题描述】:我正在使用 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 可以将它作为一种通用格式读取。
我该怎么做?
【问题讨论】:
Convert Python Opencv Image (numpy array) to PyQt QPixmap image的可能重复 【参考方案1】:您可以将 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)
【讨论】:
我最终以不同的方式实现它,但是是的!这行得通!您的答案与建议的重复答案的区别是img_as_ubyte
...否则,图像只是一堆彩色像素:-)谢谢!以上是关于在 qt 应用程序中显示 skimage 输出的主要内容,如果未能解决你的问题,请参考以下文章
from skimage.viewer.qt.QtCore import Qt ImportError: No module named QtCore