#python #изображения #numpy #scipy #pil
Изучаю питон, и никак не пойму, что делают строки: img=img[52:308,52:308] print img.shape В коде: #Fit the data into a 256*256 format and save it as a .tif file #@Sukriti Paul from PIL import Image from skimage import data, io, filters import numpy as np from scipy import ndimage from matplotlib import pyplot as plt from sklearn import manifold, datasets n=10 #number of images for i in range (1,n+1): path=str(i)+'.png' img= io.imread('/Users/sukritipaul/Desktop/D004/test_annotate/'+path) #Subsection of the image img=img[52:308,52:308] print img.shape path=str(i)+'.tif' io.imsave('/Users/sukritipaul/Desk
Ответы
Ответ 1
Это обрезка полей изображения (cropping) - все пиксели по X и Y обрезаются таким образом - выбрать все пиксели от 52-го до 308-го по соответствующей оси и пропустить все остальные. Пример в Numpy: In [267]: import numpy as np In [268]: a = np.arange(36).reshape(6,6) In [269]: a Out[269]: array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35]]) обрежем по одному пикселю: In [270]: a = a[1:5, 1:5] In [271]: a Out[271]: array([[ 7, 8, 9, 10], [13, 14, 15, 16], [19, 20, 21, 22], [25, 26, 27, 28]]) Фактически это обычная операция "среза" (slicing), которая в Numpy массивах может быть одновременна выполнена по нескольким осям (измерениям). Для N-мерной матрицы срезы можно делать сразу по всем измерениям: arr[, , ..., ] Атрибут numpy.ndarray.shape возвращает размерность массива в виде кортежа: In [295]: a.shape Out[295]: (4, 4) In [296]: np.arange(48).reshape(8,6).shape Out[296]: (8, 6) In [297]: np.arange(2*3*4).reshape(2,3,4).shape Out[297]: (2, 3, 4) Ответ 2
Вырезают фрагмент кадра размером 256x256 из, видимо, бОльшего формата, начиная с точки (52, 52)
Комментариев нет:
Отправить комментарий