diff --git a/mini_proj/_cutter.py b/mini_proj/_cutter.py new file mode 100644 index 0000000..f6414e0 --- /dev/null +++ b/mini_proj/_cutter.py @@ -0,0 +1,26 @@ +import numpy as np + +def image_cut(image, size0, size1): + """ + Takes an image and cuts it into smaller images of specified dimensions. + Images must be cut before axis rolling. + """ + dims = image.shape + assert dims[0] >= size0 + assert dims[1] >= size1 + return np.array([image[size0 * i:size0 * (i+1), size1 * j:size1 * (j+1)] \ + for i in range(dims[0] // size0) for j in range(dims[1] // size1)] + \ + [image[size0 * i:size0 * (i+1), dims[1]-size1:] \ + for i in range(dims[0] // size0) if dims[1] % size1 != 0] + \ + [image[dims[0]-size0:, size1 * j:size1 * (j+1)] \ + for j in range(dims[1] // size1) if dims[0] % size0 != \ + ) + + +if __name__ == '__main__': + # test = np.random.rand(5,4,3) + test = np.array([[ + k + 4*j for k in range(4) + ] for j in range(5)]) + print(test) + print(image_cut(test, 2, 2))