#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)
Комментариев нет:
Отправить комментарий