等分切割图片的方法

在做数据集的过程中,有时候需要将大图进行切分成小图片,一方面是为了满足训练需要,一方面是为了扩增数据集。

如下图的尺寸为5472x3648,但是我用不着这么大的图片,需要将图9等分 

等分切割图片的方法_第1张图片

市面上也有等分切割图片的软件或者网站,但是我比较懒,又想批量处理,所以这里分享一个等分切割图片的方法。

import os
from PIL import Image
# 源图片存储路径,这里我用了三张图片作为测试,其实几张都一样啦
path_img = r'test_input'        # 需要切片图的路径
img_dir = os.listdir(path_img)   # 获取文件夹包含的文件或文件夹的名字的列表
print(img_dir)
print(len(img_dir))     # 打印一下获取到的文件数量
for i in range(len(img_dir)):
    # 获取初始图片名作为id
    id = img_dir[i].split('.')[0]      # 这里是为了获取图片的名字
    img = Image.open(path_img + '/' + img_dir[i])   # 读取图片
    size_img = img.size
    print(size_img)   # 获取图片的尺寸
    # 将图片切割成9张小图片,下面代码中的3是9开根号,比如你想分割25成张小图片,写成5就好了
    weight = int(size_img[0] // 3)
    height = int(size_img[1] // 3)
    for j in range(3):
        for k in range(3):
            box = (weight * k, height * j, weight * (k + 1), height * (j + 1))    # 定切片的区域
            region = img.crop(box)  # 按照上述的区域分割图片
            # 输出路径
            region.save('test_output\\''{}-{}{}.png'.format(id, j, k))

看一下打印的输出

['100_0019_0141.JPG', '100_0019_0142.JPG', '100_0019_0143.JPG']
3
(5472, 3648)
(5472, 3648)
(5472, 3648)

再看看输出的效果

等分切割图片的方法_第2张图片 

 可以看到已经将三张图片切割成了27张图,切割完成的图片尺寸也是正常的

等分切割图片的方法_第3张图片

 

你可能感兴趣的:(图片切割,数据集,python,农情)