我想要创建一个可以传递给"**array_like
**" QImage
numpy.array()
.的子类。我希望避免使用PIL
作为替代;这样做的全部目的是避免对PIL
的依赖。此外,经常在QImage
和PIL Image
之间进行转换对我的程序来说是不切实际的。
我发现文档很神秘,在阅读之后,我仍然对如何模拟数组接口感到困惑。正如numpy文档所述,要限定为"array_like
“对象,它需要__array_interface__
属性,它是一个包含五个键的字典。但是,我以前从未处理过类型、缓冲区和内存;如果有人能解释如何解决这个问题,我们将不胜感激。
我正在使用Python3.3和PySide 1.1.2。感谢所有回复的人!
发布于 2013-01-27 06:55:16
只使用从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
https://stackoverflow.com/questions/14534434
复制