对大图片进行裁剪,用于深度学习数据集的构建

import math
import os
import random

import cv2
from PIL import Image

genpath = "./12"

datanames = os.listdir(genpath)  # 获取目录下的所有文件
SubSize = 380  ##图片大小
Slide = 10

img_num = len(datanames)
for i in datanames:
    img_num = img_num-1
    # print(type(i))
    img_path = genpath+'/'+i
    img = cv2.imread(img_path)

    ##CV转为PIL
    TURN = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img_data = Image.fromarray(TURN)

    # 对图片进行切割
    sub_y_number = math.ceil(img_data.size[0] / (SubSize - Slide))  # ceil向上取整
    sub_x_number = math.ceil(img_data.size[1] / (SubSize - Slide))
    # 分割出图片总数
    CountBlock = sub_y_number * sub_x_number

    probability_list = []
    for y_id in range(sub_y_number):
        for x_id in range(sub_x_number):
            # 图片高度起始和终止位置
            h_s = y_id * (SubSize - Slide)
            h_e = h_s + SubSize
            # 图片宽度起始和终止位置
            w_s = x_id * (SubSize - Slide)
            w_e = w_s + SubSize
            if h_e > img_data.size[0]:
                h_e = img_data.size[0] - 1
                h_s = h_e - SubSize
            if w_e > img_data.size[1]:
                w_e = img_data.size[1] - 1
                w_s = w_e - SubSize

            cropImg = img_data.crop([h_s, w_s, h_e, w_e])

            name = './new/'+'12_'+str(random.randint(1,100000))+'.jpg'

            cropImg.save(name)

    print(i, "完成!", "还有", img_num, "张!")
print('sucess')







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值