从PythonMagick图像获取像素数据?

从PythonMagick图像获取像素数据?,python,imagemagick,jpeg2000,Python,Imagemagick,Jpeg2000,有人知道一种不必先将像素数据写入磁盘就可以从PythonMagick.Image实例获取像素数据的方法吗 例如,我可以使用以下方法读取图像: import PythonMagick im = PythonMagick.Image('image.jp2') 我现在希望能够获得未压缩的图像数据,以便在其他方面(如NumPy或matplotlib)使用它,但我似乎找不到任何方法来做到这一点。我只想直接使用matplotlib或PIL,但我正在阅读的图像格式是JPEG2000,据我所知,只有Pytho

有人知道一种不必先将像素数据写入磁盘就可以从PythonMagick.Image实例获取像素数据的方法吗

例如,我可以使用以下方法读取图像:

import PythonMagick
im = PythonMagick.Image('image.jp2')
我现在希望能够获得未压缩的图像数据,以便在其他方面(如NumPy或matplotlib)使用它,但我似乎找不到任何方法来做到这一点。我只想直接使用matplotlib或PIL,但我正在阅读的图像格式是JPEG2000,据我所知,只有PythonMagick支持这种格式


有什么建议吗?

免责声明:我没有在我现在的位置建造PythonMagick,也不是专家,因此(1)以下任何或所有内容可能都是错误的,(2)肯定没有你希望的那么具体,(3)如果其他人知道得更好,我希望他们不会因为看到这里已经有答案而被推迟。无论如何:

快速查看代码,您似乎可以使用
Image
类上的
pixelColor
方法逐个读取像素值。这将返回一个
PythonMagick.Color
值,您可以从中提取R、G、B分量。底层C++库支持使用图像:一次读取大量像素::WrimeXxels<代码>,它也出现在 PththOnMigik.IsIs/COD>中;但我认为,该方法的正确使用取决于PythonMagick中没有实现的其他东西。这是一个遗憾,因为我打赌它比一次读取一个像素要高效得多

或者,也可能更好,它看起来好像可以将图像的内容写入内存中的
PythonMagick.Blob
对象,这基本上与只写入文件而不写入文件:-)的操作相同。您可以选择它应该写入的格式,就像您写入文件时所做的那样。似乎有一种叫做
get\u blob\u data
的东西,用于提取
blob
的内容。大概是这样的:

im = PythonMagick.Image('image.jp2')
blob = PythonMagick.Blob()
im.write(blob, "png")
data = PythonMagick.get_blob_data(blob)

我认为,生成的
数据是一个Python字符串,其字节是图像的二进制表示形式。(我假设您使用的是Python2.x,其中字符串类型为8位。我不知道PythonMagick是否适用于3.x。)我认为有些格式基本上是原始像素数据;试试“RGB”。然后,您可以通过大量的
struct.unpack
或其他方式提取内容。

谢谢您的建议,Gareth。您发现哪个版本的PythonMagick具有get\u blob\u data方法?我现在使用的是Ubuntu存储库中的0.9.1版,但我似乎没有。我想最终我可能不得不使用pixel迭代器,因为numpy希望它的输入已经是数组形式()。我想我正在查看ImageMagick网站上最新版本的源代码。我完全有可能误解了它——正如我所说,我不是PythonMagick专家。这是有效的:open(“foo.png”,“wb”)。write(blob.data)不需要调用get\u blob\u data()。。。。