Второ, използвайте 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=R299/1000+G587/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 пиксела, а размерът на изображението се показва, както следва:

изображение

Много ли се е размило? Добре, толкова много за четене на снимки и преоразмеряване на снимки, надявам се, че ще помогне на всички.