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')
对大图片进行裁剪,用于深度学习数据集的构建
于 2024-06-18 09:23:22 首次发布