Másodszor a scipy segítségével olvassa el a képet, és változtassa meg a kép méretét

Second Use Scipy Read Picture



1. scipy.ndimage.imread

scipy.ndimage.imread () metódus a scipy-ben 1.0.0 A (z) verzióban dobták le 1.2.0 Ezt a módszert az imageio.imread hívja meg a verzióban. Mivel a scipy verzióm továbbra is a 0.19.0 verzió, ezért közvetlenül a scipy.ndimage.imread oldalon fogom felhívni.
Ezt a módszert a fájlok tömbként történő olvasására használják. Ez a módszer csak a Python Imaging Library (PIL) könyvtár telepítése után használható. Ez a módszer 3 paramétert kap: fnamelelapulmód . Ha az fname a fájl elérési útja, ha lapos = Igaz , Ezután a kép egyetlen szürke réteggé alakul. Kép olvasása közben lehetőség van képet átalakítani az (xdim, ydin, 3or4) -hez hasonló háromdimenziós mátrixsá. Mivel egy kép RGB 3 színcsatornából állhat, ha nincs átlátszóság, akkor az utolsó A bit értéke 3, átlátszósággal, az utolsó bit értéke 4. Ezen háromdimenziós mátrix elemek értéke 0-tól 255-ig. Nem beszélek a módról, az alapértelmezett 'RGB' mód, és más értékek is használhatók, ha érdekel, megnézheted Hivatalos API , Nézzünk meg egy példát:

import pylab import scipy import numpy as np from scipy import ndimage import matplotlib.pyplot as plt dir = './testImgs/' filename = dir + 'la_defense.jpg' image = np.array(ndimage.imread(filename, flatten=False)) print(image.shape) plt.imshow(image) # display image pylab.show()

A következőket nyomtatja ki:
kép



És jelenítsen meg képeket:



kép



Ez azt jelenti, hogy a fenti kép 1181 * 1181 pixelből áll, a 3 pedig RGB 3 csatornát jelent átlátszóság nélkül. Ha a kép olvasása közben a laposra állítást True értékre állítja, akkor a következő nyomtatási eredményt kapja:

kép

A bemutatott kép a következő:



kép

Jelenleg a kép csak szürkeárnyalatos kép, és minden egyes pixelértéket a következőképpen számolunk:
L=R299/1000+G587/1000+B114./1000 L = R ∗ 299/1000 + G ∗ 587/1000 + B ∗ 114/1000

2.scipy.misc.imresize

A scipy.misc.imresize (arr, size, interp = ’bilinear’, mode = Nincs) módszer 4 paraméterrel és 2 választható paraméterrel rendelkezik. Kép átméretezésére, azaz átméretezésére szolgál. Ahol arr az átméretezni kívánt képnek megfelelő mátrix, amely lehet a scipy.ndimage.imread () metódus által visszaadott érték. A méretnek 3 értéke lehet: int (a képet az aktuális képméret százalékában adja vissza), float (a kép méretét adja vissza) / Aktuális képméret), duplázás (a kép méretét vissza kell adni). Két opcionális paramétert itt nem írunk le. 1-ben kaptunk egy (1181,1181,3) színes képet, most ezzel állítjuk be a méretet, a kód a következő:

import pylab import scipy import numpy as np from scipy import ndimage import matplotlib.pyplot as plt dir = './testImgs/' filename = dir + 'la_defense.jpg' image = np.array(ndimage.imread(filename, flatten=False)) print(image.shape) my_image = scipy.misc.imresize(image, size=(64, 64)) print(my_image.shape) plt.imshow(my_image) pylab.show()

A nyomtatási eredmény a következő:

kép
Látható, hogy a kép mérete most 64 * 64 pixel, és az átméretezett kép a következőképpen jelenik meg:

kép

Nagyon elmosódott? Oké, ennyit a képek olvasásáról és a képek átméretezéséről, remélem, ez mindenkinek segít.