将文件夹中的图片批量分割

 一、读取文件夹图片

输入:

  • img_path:存放图片的文件夹名
  • n:图片分割份数
# 图片文件夹名, 切割份数
def read_img(img_path: str, n: int):
    img_array = []  # 用于保存图片
    # 图片送入列表
    for filename in os.listdir(r'./' + img_path):
        # img = cv2.imread(img_path + '/' + filename)
        img_array.append(filename)
    # 获取索引和图片名
    for i, img_dir in enumerate(img_array):
        # 送入图片分割函数,批量分割
        img_cut(r'./' + img_path + '/' + img_dir, i, n)

二、图像分割函数:

输入:

  •  img_path:图片路径
  • i :第i张图片
  • n: 分割份数
# 图片切割
def img_cut(img_path:str, i: int, n: int):
    # 切割后的图片保存位置
    file = './LR'
    folder = os.path.exists(file)
    if not folder:
        os.mkdir(file)

    img = Image.open(img_path)

    # 获取图片的宽和高
    width, high = img.size
    item_width = width / math.sqrt(n)
    item_high = high / math.sqrt(n)

    print(f'正在处理第{i + 1}张图片')
    i = i * n
    for row in range(0, n):
        for clu in range(0, n):
            # 矩形框
            box = (item_width * clu, item_high * row, item_width * (clu + 1), item_high * (row + 1))
            # 根据矩形框剪裁
            img_crop = img.crop([box[0], box[1], box[2], box[3]])
            i += 1
            # 按行优先保存图片
            img_crop.save(f'{file}/' + f'{i}' + '.png')

完整代码:

from PIL import Image
import os
import math

# 图片切割
def img_cut(img_path:str, i: int, n: int):
    # 切割后的图片保存位置
    file = './LR'
    folder = os.path.exists(file)
    if not folder:
        os.mkdir(file)

    img = Image.open(img_path)

    # 获取图片的宽和高
    width, high = img.size
    item_width = width / math.sqrt(n)
    item_high = high / math.sqrt(n)

    print(f'正在处理第{i + 1}张图片')
    i = i * n
    for row in range(0, n):
        for clu in range(0, n):
            # 矩形框
            box = (item_width * clu, item_high * row, item_width * (clu + 1), item_high * (row + 1))
            # 根据矩形框剪裁
            img_crop = img.crop([box[0], box[1], box[2], box[3]])
            i += 1
            img_crop.save(f'{file}/' + f'{i}' + '.png')


# 图片文件夹名, 切割份数
def read_img(img_path: str, n: int):
    img_array = []  # 用于保存图片
    # 图片送入列表
    for filename in os.listdir(r'./' + img_path):
        # img = cv2.imread(img_path + '/' + filename)
        img_array.append(filename)
    # 获取索引和图片名
    for i, img_dir in enumerate(img_array):
        # 送入图片分割函数,批量分割
        img_cut(r'./' + img_path + '/' + img_dir, i, n)

read_img('img_ori', 16)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值