def slice_image(image, stride, image_size):
# 切分一行图片,长条图片
def slice_image_y(image, stride, image_size):
h, _, _ = image.shape
image_list = []
for i in range(0, h, stride):
if i + image_size > h:
im = image[-image_size:, :, :]
else:
im = image[i:i + image_size, :, :]
image_list.append(im)
return image_list
# 切分为一列的长条图片
def slice_image_x(image, stride, image_size):
_, w, _ = image.shape
image_list = []
for i in range(0, w, stride):
if i + image_size > w:
im = image[:, -image_size:, :]
else:
im = image[:, i:i + image_size, :]
image_list.append(im)
return image_list
# 切分为小图片
small_image = []
for im_y in slice_image_y(image, stride, image_size):
for im_x in slice_image_x(im_y, stride, image_size):
small_image.append(im_x)
# 除非,向上取整
def upsdv(x, y):
if x % y == 0:
return x / y
else:
return (x // y) + 1
# 获取shape
h, w = upsdv(image.shape[0], strides), upsdv(image.shape[1], strides)
shape = (int(h), int(w))
return small_image, shape
使用numpy实现图片等距离剪切
最新推荐文章于 2024-01-11 10:38:01 发布