Мне нужно разделить изображение RGBA на произвольное количество блоков, которые имеют одинаковый размер, насколько это возможно
Я пытался использовать numpy.array_split, но не уверен, как это сделать при сохранении RGBA.каналы
Я посмотрел следующие вопросы, ни один из которых не описывает, как разделить изображение на n блоков, они ссылаются на разделение изображения на блоки с заданным размером пикселя или как разделить изображение на какую-то форму.
Хотя кажется, что вычислить количество блоков по размеру и размеру изображения было бы не просто, я не уверен, как это сделать.
Как разделить изображение наНесколько кусков в Python
Разрезание одного изображения на несколько изображений с помощью библиотеки изображений Python
Разделение изображения на информацию о прямоугольниках в Python
При попытке определить количество ящиков по размеру пиксельного ящика я использовал формулу
num_boxes = (img_size[0]*img_size[1])/ (box_size_x * box_size_y)
, но это не привело кразделение должным образом
Чтобы уточнить, я хотел бы иметь возможность ввести изображение, представляющее собой массив значений размера (a, b, 4) и несколько блоков, и вывести изображения в некоторой форме (np array предпочтительнее, но что бы ни работало)
Я ценю любую помощь, даже если вы не можете предоставить полный метод, я был бы признателен за некоторые указания.
Я пробовал
def split_image(image, n_boxes):
return numpy.array_split(image,n_boxes)
#doesn't work with colors
def split_image(image, n_boxes):
box_size = factor_int(n_boxes)
M = im.shape[0]//box_size[0]
N = im.shape[1]//box_size[1]
return [im[x:x+M,y:y+N] for x in range(0,im.shape[0],M) for y in range(0,im.shape[1],N)]
factor_int возвращает целое число как можно ближе к квадрату из Коэффициент целое число к чему-то как можно ближе к квадрату