gpt4 book ai didi

python - 从 PythonMagick 图像获取像素数据?

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:29 25 4
gpt4 key购买 nike

有谁知道无需先将其写入磁盘即可从 PythonMagick.Image 实例获取像素数据的方法?

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

import PythonMagick
im = PythonMagick.Image('image.jp2')

我现在希望能够获得未压缩的图像数据,以便我可以在 NumPy 或 matplotlib 等其他东西中使用它,但我似乎找不到任何方法来做到这一点。我会直接使用 matplotlib 或 PIL,但我正在阅读的图像格式是 JPEG 2000,据我所知,只有 PythonMagick 支持它。

有什么建议吗?

最佳答案

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

快速浏览一下代码,您似乎可以使用 Image 类的 pixelColor 方法一个一个地读取像素值。这将返回一个 PythonMagick.Color 值,您可以从中提取 R、G、B 分量。底层 C++ 库支持使用 Image::writePixels 一次读取大量像素,这也存在于 PythonMagick.Image 中;但我认为该方法的正确使用取决于 PythonMagick 中未实现的其他内容。真可惜,因为我敢打赌这比一次读取一个像素要高效得多。

或者,可能更好,看起来好像你可以将图像的内容写入内存中的 PythonMagick.Blob 对象,这基本上与只写入文件而没有文件相同:-)。您可以选择写入的格式,就像写入文件时所做的那样。似乎有一个名为 get_blob_data 的东西用于提取 Blob 的内容。像这样:

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

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

关于python - 从 PythonMagick 图像获取像素数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com