python matplotlib.pyplot imread (Programare, Python, Matplotlib, Imread)

user3284140 a intrebat.

Eu folosesc plt.imread pentru citirea imaginilor .tiff de mari dimensiuni.Din cauza dimensiunilor mari, aș dori să selectez doar o parte din imagine pentru a fi încărcată.Aș dori să fac ceva de genul:

plt.imread(filename, [s1:s2, r1:r2])

alegerea pixelului inițial și final pentru ambele dimensiuni.

Există o modalitate de a face acest lucru?

Mulțumesc mult

Comentarii

  • Vedeți întrebarea conexă stackoverflow.com/questions/23878165/…. –  > Por Mihai8.
  • Acest lucru este posibil să fie un duplicat al : stackoverflow.com/questions/19695249/… -…  > Por OYRM.
2 răspunsuri
tmdavison

Cred că trebuie să citești întreaga imagine, după care o poți felia înainte de a face orice procesare pe ea:

import matplotlib.pyplot as plt
my_img = plt.imread('my_img.tiff')
my_clipped_img = my_img[s1:s2,r1:r2]

sau, într-o singură linie:

import matplotlib.pyplot as plt
my_img = plt.imread('my_img.tiff')[s1:s2,r1:r2]

Acesta din urmă are avantajul de a nu crea o matrice de dimensiuni complete, ci doar de dimensiunea dorită.

Țineți cont de faptul că s1:s2 aici ar trebui să fie limitele dvs. în direcția verticală, iar r1:r2 în direcția orizontală.

StephenBoesch

Singurul mod în care ar fi posibilă citirea doar a unei porțiuni din fișier ar fi dacă acesta ar fi într-un format columnar și partiționat pe disc atât pe orizontală (rânduri), cât și pe verticală (coloane). Hive, și Hadoop oferă astfel de mecanisme (și Spark le sprijină). Dar acestea sunt pentru mai multe stocuri de date și nu pentru fișiere (de imagine) individuale.

Așadar, răspunsul de la tmdavison este corect – și poate că acest lucru oferă o mai bună percepție a motivului pentru care se întâmplă acest lucru.