GDAL (z powiązaniami w Pythonie) oferuje bardzo dobre sterowniki do tego. Mimo, że jest to pakiet geoprzestrzenny, działa na przykład z BMP i PNG. Ten przykład pokazuje, jak załadować PNG wiersz po wierszu:
import gdal
# only loads the dataset
ds = gdal.Open('D:\\my_large_image.png')
# read 1 row at the time
for row in range(ds.RasterYSize):
row_data = ds.ReadAsArray(0,row,ds.RasterXSize,1)
ds = None # this closes the file
To daje tablicę NumPy w wyniku, więc gotowy na przetwórstwo. Możesz napisać dowolny wynik w podobny sposób.
print type(row_data)
<type 'numpy.ndarray'>
print row_data.shape
(3, 1, 763)
print row_data
[[[ 0 0 255 ..., 230 230 0]]
[[ 0 0 252 ..., 232 233 0]]
[[ 0 0 252 ..., 232 233 0]]]
Zainstalowanie pakietu przeznaczonego do odczytu może być nieco przesadzone, jeśli PIL lub coś innego może to zrobić. Ale jest to solidna opcja, mam przetworzone obrazy o wielkości 30000 * 30000 pikseli w ten sposób.
W wielu przypadkach tak, ale zależy to od formatu obrazu i biblioteki, której używasz do jej odczytania. W jakim formacie są twoje obrazy? –
Używam formatu pliku .PNG. – nickponline
TIFF sprawiłoby, że byłoby to szczególnie łatwe, ale nie sądzę, że PIL obsługuje czytanie TIFF-ów przez zespoły. – Jaime