我想创建一个可以传递给array_like
的“QImage
”numpy.array()
子类。
我想避免使用PIL
作为替代品;这一点的全部意义是避免依赖PIL
。此外,不断在QImage
和PIL Image
之间进行转换对我的计划来说是不切实际的。
我发现documentation神秘,在阅读之后我仍然对如何模拟阵列界面感到困惑。正如numpy文档所述,要获得“array_like
”对象的资格,它需要__array_interface__
属性,这是一个包含五个键的字典。但是,我以前从未处理过类型,缓冲区和内存;如果有人能解释如何解决这个问题,我将不胜感激。
我正在使用Python 3.3和PySide 1.1.2。 感谢所有回复的人!
答案 0 :(得分:3)
使用从QImage.bits()
和np.frombuffer()
返回的缓冲区对象更容易。
def qimage2array(q_image):
width = q_image.width()
height = q_image.height()
arr = np.frombuffer(q_image.bits(), dtype=np.uint8).reshape([height, width, -1])
return arr