等分切割图片的方法

该文章介绍了一种使用Python编程和PIL库来批量处理大图片,将其等分为小图片的方法。通过提供的代码示例,可以将任意尺寸的图片按需分割,例如将5472x3648的图片9等分,生成的小图片尺寸正常,适用于数据集的创建和扩充。
摘要由CSDN通过智能技术生成

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

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

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

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)

再看看输出的效果

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值