在图像识别任务中,裁剪是一种比较常用的数据增强方法。通过numpy对图像数组进行截取就可以实现裁剪的功能。
对于像目标检测这类带标注框的图像识别任务,裁剪要确保目标不被裁掉,另外,还要更新标注框的位置,因为经过裁剪后目标在图中的位置发生了变化。以下函数实现了:
- 在保证目标点points不被裁掉的情况下,随机裁剪图像。
- 计算原图中坐标点points在裁剪后的图像中的位置坐标。
import numpy as np
import random
def random_crop_with_points(image, points):
"""随机裁剪图像,并计算points在裁剪后的图像中的位置.
Args:
image: 图像数组
points: [(x, y), ...],原图像中的坐标点集合
Return:
new_img: 裁剪后的图像
new_pts: [(x, y), ...],原图中的点在裁剪后的图中