1

创建一个可以传递给array_likeQImagenumpy.array(). 我想避免PIL用作替代品;这样做的全部目的是避免对PIL. 此外,不断在QImage和之间转换PIL Image对我的程序来说是不切实际的。

我发现文档很神秘,阅读后我仍然对如何模拟数组接口感到困惑。正如 numpy 文档所述,要成为一个 " array_like" 对象,它需要__array_interface__属性,它是一个具有五个键的字典。但是,我以前从未处理过类型、缓冲区和内存。如果有人能解释如何解决这个问题,将不胜感激。

我正在使用 Python 3.3 和 PySide 1.1.2。感谢所有回复的人!

4

1 回答 1

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
于 2013-01-27T14:55:16.533 回答