I am working on Ubuntu 14.04 with Python 3.4 (Numpy 1.9.2 and PIL.Image 1.1.7). That's what I'm doing:
>>> from PIL import Image >>> import numpy as np >>> img = Image.open("./tifs/18015.pdf_001.tif") >>> arr = np.asarray(img) >>> np.shape(arr) (5847, 4133) >>> arr.dtype dtype('bool')
It seems to me that Python suddenly ran out of memory. If so - how can I allocate more memory for Python? As I can see from htop, the 32GB memory capacity is not even removed.
You can download the TIFF image here .
If I create an empty logical array, explicitly set the pixels, and then apply the summation - then it works:
>>> arr = np.empty((h,w), dtype=bool) >>> arr.setflags(write=True) >>> for r in range(h): >>> for c in range(w): >>> arr.itemset((r,c), img.getpixel((c,r))) >>> v=arr.sum(axis=0) >>> v.mean() 5726.8618436970719 >>> arr.shape (5847, 4133)
But this "workaround" is not very satisfactory, since copying each pixel takes too long - maybe there is a faster method?
source share