问题描述
我想将图像转换为NumPy数组并转换为PySide QPixmap,因此可以显示它(在PySide UI中编辑).我已经找到了此工具: qimage2ndarray ,但仅适用于PyQt4.我尝试对其进行更改以使其能够与PySide一起使用,但是我将不得不更改该工具的C部分,并且我没有使用C的经验.我该怎么做或有其他选择吗?
I want to convert an image into a NumPy array to a PySide QPixmap, so I can display it ( in my PySide UI). I already found this tool: qimage2ndarray, but it only works for PyQt4. I tried to change it to get it working with PySide, but I would have to change the C part of the tool and I have no experience with C. How can I do this or are there any alternatives?
推荐答案
一种替代方法是只使用PIL库.
One alternative is to just use PIL library.
>>> import numpy as np
>>> import Image
>>> im = Image.fromarray(np.random.randint(0,256,size=(100,100,3)).astype(np.uint8))
>>> im.show()
您可以在 http://www.pyside.org/docs上查看QPixmap构造函数/pyside/PySide/QtGui/QImage.html .
看起来您应该能够直接在构造函数中使用numpy数组:
It looks like you should be able to use a numpy array directly in the constructor:
其中format参数是以下之一:.
where the format argument is one of these: http://www.pyside.org/docs/pyside/PySide/QtGui/QImage.html#PySide.QtGui.PySide.QtGui.QImage.Format.
例如,您可以执行以下操作:
So, for example you could do something like:
>>> a = np.random.randint(0,256,size=(100,100,3)).astype(np.uint32)
>>> b = (255 << 24 | a[:,:,0] << 16 | a[:,:,1] << 8 | a[:,:,2]).flatten() # pack RGB values
>>> im = PySide.QtGui.QImage(b, 100, 100, PySide.QtGui.QImage.Format_RGB32)
我没有安装PySide,所以我没有进行测试.可能无法按原样工作,但它可能会引导您朝着正确的方向前进.
I don't have PySide installed so I haven't tested this. Chances are it won't work as is, but it might guide you in the right direction.
这篇关于将numpy数组转换为PySide QPixmap的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!