我正在尝试计算两个图像的像素值的差异,但我遇到了内存问题,因为我的图像非常大。有没有办法在python中我可以读取一个图像让我们一次说10x10块而不是尝试读取整个图像?我希望通过读取小块中的图像来解决内存问题,将这些块分配给numpy数组,然后使用pytables保存那些numpy数组以进行进一步处理。任何建议都将不胜感激。
此致
伯克
答案 0 :(得分:4)
您可以使用numpy.memmap并让操作系统决定将图像文件的哪些部分分页或分页。如果使用64位Python,则与可用RAM相比,虚拟内存空间是天文数字。
答案 1 :(得分:1)
如果你有时间预处理图像,你可以将它们转换为位图文件(这将是大的,而不是压缩的)然后通过偏移读取文件的特定部分,如下所示:
Load just part of an image in python
可以使用以下代码在Python中完成从任何文件类型到位图的转换:
from PIL import Image
file_in = "inputCompressedImage.png"
img = Image.open(file_in)
file_out = "largeOutputFile.bmp"
img.save(file_out)