У меня довольно длинный цикл, где я обрезаю изображения в разных местах с квадратом с фиксированным размером, чтобы получить массивы numpy.
Я использовал crop
от PIL
Image библиотека. Затем я конвертирую его как массив numpy
с np.asarray
.Быстрая реализация python обрезки с padding = wrap
from PIL import Image
import numpy as np
im=Image.open("image.png")
box=(left,top,left+width,top+width)
res=np.asarray(im.crop(box))
Однако только обивка выполнена (когда центр вашего урожая менее чем ширина/2 бордюра) постоянно и равно 0, и я хотел бы, чтобы это было «обернуть» отступы, как в Numpy площадки документа ,
Моим решением было бы сделать что-то подобное.
array=np.asarray(Image.open("image.png"))
padded_array=np.pad(array,((width/2,width/2),(width/2,width/2),(0,0)),"wrap")
res=padded_array[top+width/2:top+width/2+width,left+width/2:left+width/2+width]
Мне было интересно, был ли более эффективный способ сделать это.
Спасибо! Я не знал этой функции. Не уверен, если это действительно быстрее, я собираюсь проверить. – jean
Зависит от количества и размера окон, которые вы пытаетесь выполнить. Проблема с использованием дополнения заключается в том, что вам может понадобиться проложить несколько окон, но не другие (некоторые обертываются, а некоторые нет), и вам нужно заполнить весь массив для каждого окна, что само по себе неэффективно. – Benjamin
Да, хорошее замечание, я думаю, это сводится к тому времени, когда переформатирование происходит по сравнению с бесполезным дополнением. – jean