Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Что делает данная операция `img[52:308,52:308]`

#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)

Комментариев нет:

Отправить комментарий