Załaduj tylko część obrazu w Pythonie
To może być głupie pytanie, ale ...
Mam kilka tysięcy obrazów, które chciałbym załadować do Pythona, a następnie przekonwertować na tablice numpy. Oczywiście to idzie trochę powoli. Ale interesuje mnie tylko niewielka część każdego obrazu. (Ta sama część, zaledwie 100 x 100 pikseli w środku obrazu).
Czy jest jakiś sposób, aby załadować tylko część obrazu, aby wszystko przyspieszyło?
Oto przykładowy kod, w którym generuję przykładowe obrazy, zapisuję je i ładuję z powrotem.
import numpy as np
import matplotlib.pyplot as plt
import Image, time
#Generate sample images
num_images = 5
for i in range(0,num_images):
Z = np.random.rand(2000,2000)
print 'saving %i'%i
plt.imsave('%03i.png'%i,Z)
%load the images
for i in range(0,num_images):
t = time.time()
im = Image.open('%03i.png'%i)
w,h = im.size
imc = im.crop((w-50,h-50,w+50,h+50))
print 'Time to open: %.4f seconds'%(time.time()-t)
#convert them to numpy arrays
data = np.array(imc)