Второ, използвайте scipy, за да прочетете картината и да промените размера на картината
Second Use Scipy Read Picture
1. sccipy.ndimage.imread
scipy.ndimage.imread () метод в scipy 1.0.0 Отпадна във версията, в 1.2.0 Този метод се извиква от imageio.imread във версията. Тъй като моята версия на scipy все още е версия 0.19.0, ще я извикам директно чрез scipy.ndimage.imread.
Този метод се използва за четене на изображения от файл като масив. Този метод може да се използва само след инсталиране на библиотеката Python Imaging Library (PIL). Този метод получава 3 параметъра: fname , изравнявам , режим . Където fname е пътят към файла, ако сплескване = Вярно , Тогава картината ще бъде преобразувана в един сив слой. При четене на картина е възможно да я преобразувате в триизмерна матрица, подобна на (xdim, ydin, 3 или4). Тъй като картината може да бъде съставена от RGB 3 цветни канала, ако няма прозрачност, последният Битовата стойност е 3, с прозрачност, последната битова стойност е 4. Стойностите на тези триизмерни матрични елементи варират от 0 до 255. Няма да говоря за режима, по подразбиране е режим „RGB“ и могат да се използват и други стойности, ако се интересувате, можете да погледнете Официален API , Нека разгледаме един пример:
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()
Ще отпечата следното:
И покажете снимки:
Това означава, че горната картина е съставена от 1181 * 1181 пиксела, а 3 означава RGB 3 канала без прозрачност. Ако зададете сплескване на True при четене на картината, ще получите следния резултат за печат:
Показаната снимка е както следва:
Понастоящем картината е просто изображение в сива скала и стойността на всеки пиксел се изчислява, както следва:
L=R∗299/1000+G∗587/1000+Б.∗114/1000 L = R ∗ 299/1000 + G ∗ 587/1000 + B ∗ 114/1000
2.scipy.misc.imresize
Методът scipy.misc.imresize (arr, size, interp = ’bilinear’, mode = None) има 4 параметъра и 2 незадължителни параметъра. Използва се за преоразмеряване на снимка, т.е. Където arr е матрицата, съответстваща на изображението, което трябва да бъде преоразмерено, което може да бъде стойността, върната от метода scipy.ndimage.imread (). Размерът може да има 3 стойности: int (връща изображението като процент от текущия размер на изображението), float (връща размера на изображението / Текущ размер на изображението), кортеж (размерът на изображението трябва да бъде върнат). Тук не са описани два незадължителни параметъра. В 1 получихме (1181,1181,3) цветно изображение, сега ще коригираме размера с него, кодът е както следва:
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()
Резултатът от печат е както следва:
Вижда се, че размерът на изображението вече е 64 * 64 пиксела, а размерът на изображението се показва, както следва:
Много ли се е размило? Добре, толкова много за четене на снимки и преоразмеряване на снимки, надявам се, че ще помогне на всички.