![b64fdf5beebbd905b6ff4f22e269797c.png](https://img-blog.csdnimg.cn/img_convert/b64fdf5beebbd905b6ff4f22e269797c.png)
前言
上一篇我们说到DOTA数据集提取感兴趣类别数据:
馨意:目标检测DOTA数据集提取感兴趣类别数据zhuanlan.zhihu.com![3b1dfa67eae1822617b1d45614322976.png](https://img-blog.csdnimg.cn/img_convert/3b1dfa67eae1822617b1d45614322976.png)
我们提取完之后需要将数据集切割为固定大小的数据集(因为原数据大多尺寸太大)。我们不仅要切割图像,对应的标签txt也要进行“切割”,即为每张切割的结果图像适配新的标签txt文件。
数据集切割
切割代码主要是整理修改了一下薛京东同学的博客,特地感谢。
import cv2
import os
# 图像宽不足裁剪宽度,填充至裁剪宽度
def fill_right(img, size_w):
size = img.shape
# 填充值为数据集均值
img_fill_right = cv2.copyMakeBorder(img, 0, 0, 0, size_w - size[1],
cv2.BORDER_CONSTANT, value = (107, 113, 115))
return img_fill_right
# 图像高不足裁剪高度,填充至裁剪高度
def fill_bottom(img, size_h):
size = img.shape
img_fill_bottom = cv2.copyMakeBorder(img, 0, size_h - size[0], 0, 0,
cv2.BORDER_CONSTANT, value = (107, 113, 115))
return img_fill_bottom
# 图像宽高不足裁剪宽高度,填充至裁剪宽高度
def fill_right_bottom(img, size_w, size_h):
size = img.shape
img_fill_right_bottom = cv2.copyMakeBorder(img, 0, size_h - size[0], 0, size_w - size[1],
cv2.BORDER_CONSTANT, value = (107, 113, 115))
return img_fill_right_bottom
# 图像切割
# img_floder 图像文件夹
# out_img_floder 图像切割输出文件夹
# size_w 切割图像宽
# size_h 切割图像高
# step 切割步长
def image_split(img_floder, out_img_floder, size_w = 1000, size_h = 1000, step = 800):
img_list = os.listdir(img_floder)
count = 0
for img_name in img_list:
number = 0
# 去除.png后缀
name = img_name[:-4]
img