‘constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x,y)时前面用x填充,后面用y填充,缺省值填充0
‘edge’——表示用边缘值填充
‘linear_ramp’——表示用边缘递减的方式填充
‘maximum’——表示最大值填充
‘mean’——表示均值填充
‘median’——表示中位数填充
‘minimum’——表示最小值填充
‘reflect’——表示对称填充
‘symmetric’——表示对称填充
‘wrap’——表示用原数组后面的值填充前面,前面的值填充后面
图文解释
原图
constant(连续填充相同的值,每个轴可以分别指定填充值)
Image.fromarray(resize(im,mode=‘constant’,constant_values=(10,160)))
edge(用边缘值填充)
linear_ramp(边缘递减的方式填充)
maximum(最大值填充)
mean(均值填充)
median(中位数填充)
minimum(最小值填充)
reflect(对称填充)
symmetric(对称填充)
wrap(用原数组后面的值填充前面,前面的值填充后面)
测试代码
class ResizeWithPadding(object):
def __init__(self, target_size=(256, 256)):
self.target_size = target_size
def __call__(self, np_img,mode='linear_ramp',constant_values=0, gt=None, pos=None):
# 获取图像的原始尺寸
h, w, _ = np_img.shape
target_h, target_w = self.target_size
# 计算 padding 大小
pad_top = (target_h - h) // 2
pad_bottom = target_h - h - pad_top
pad_left = (target_w - w) // 2
pad_right = target_w - w - pad_left
# 使用 numpy 进行 padding
if mode != "constant":
padded_img = np.pad(np_img, ((pad_top, pad_bottom), (pad_left, pad_right), (0, 0)), mode=mode)
else:
padded_img = np.pad(np_img, ((pad_top, pad_bottom), (pad_left, pad_right), (0, 0)), mode='constant', constant_values=constant_values)
return padded_img