У меня есть несколько изображений, которые я хочу обрезать, а затем переформатируйте. Для того, чтобы помочь мне с этим я написал две вспомогательные функции:Векторизация изменения и обрезки изображений с использованием PIL
def crop_images(images_data):
cropped_images = []
for image_data in images_data:
image = Image.fromarray(image_data)
cropped_image = np.asarray(image.crop((25,40,275,120)))
cropped_images.append(cropped_image)
return(np.array(cropped_images))
def resize_images(images_data):
resized_images = []
width, height = images_data.shape[2], images_data.shape[1]
resized_width, resized_height = int(width/2), int(height/2)
for image_data in images_data:
image = Image.fromarray(image_data)
image = image.resize((resized_width, resized_height), Image.ANTIALIAS)
resized_images.append(np.asarray(image))
return(np.array(resized_images))
Тогда я бы просто цепь две функции вместе, чтобы обработать мои изображения как: resize_images(crop_images(images_data))
Но мне было интересно, есть ли способ векторизовать эту операцию, поскольку я знаю, что numpy
в идеале должен быть векторизованными операциями, поскольку он быстрее.
Кажется, вы обрезаете ту же форму? Если это так, использование инициализированного массива будет иметь смысл, если вы еще этого не сделали. – Divakar
Кажется, что в этом случае более оптимальным является обрезка с использованием numpy вместо обрезки с использованием библиотеки изображений. – physicalattraction