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