import cv2
import os
import os.path as osp
# 设置切割份数
cut_row = 2 # 行切割份数
cut_col = 2 # 列切割份数
# 读取图片
img_dirs = "/原图文件夹/picture2/"
save_dirs = "/切割图文件夹/cut_picture2/"
os.makedirs(save_dirs, exist_ok=True)
# 获取图片尺寸
for name in os.listdir(img_dirs):
print("name:", name)
Img_path = osp.join(img_dirs, name)
img = cv2.imread(Img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#print("img:", img)
file_name, extension = os.path.splitext(name)
print(file_name)
row, col, cha = img.shape
print('row=', row)
print('col=', col)
print('cha=', cha)
# 设置图片切割的步长及切割后图片的尺寸
cutting_step_row = row/cut_row # 行移动步长
cutting_step_col = col/cut_col # 列移动步长
cutting_row = row/cut_row # 裁剪图像的行数
cutting_col = col/cut_col # 裁剪图像的列数
index = 1 # 图片的命名序号
# i代表行 j代表列
# 四张图分别为左上,左下,右上,右下
for i in range(cut_row):
for j in range(cut_col):
print('i=', i)
print('j=', j)
y0 = 0 + j * cutting_step_col # 初始起始点列坐标 + 水平方向移动参数 * 列移动步长
y1 = cutting_col + j * cutting_step_col # 初始截至点列坐标 + 水平方向移动参数 * 列移动步长
x0 = 0 + i * cutting_step_row # 初始起始点横坐标 + 垂直方向移动参数 * 行移动步长
x1 = cutting_row + i * cutting_step_row # 初始截至点列坐标 + 垂直方向移动参数 * 行移动步长
# 切割
cropped = img[int(y0):int(y1), int(x0):int(x1)]
cropped1 = cv2.resize(cropped, (1280, 960), interpolation=cv2.INTER_AREA)
# 保存
if index < 10:
savegtsem_path = osp.join(save_dirs, file_name + str(index) + ".jpg")
cv2.imwrite(savegtsem_path, cv2.cvtColor(cropped1, cv2.COLOR_BGR2RGB))
index = index + 1
elif index < 100:
savegtsem_path = osp.join(save_dirs, file_name + str(index) + ".jpg")
cv2.imwrite(savegtsem_path, cv2.cvtColor(cropped1, cv2.COLOR_BGR2RGB))
index = index + 1
print("done!")