定义pad_image_stride函数,将图像的长和宽填充到可以被指定整数整除。这个整数倍通常定义为stride。
opencv关键函数:cv2.copyMakeBorder
#im为待填充的图像
#top为图像上方填充像素个数
#bottom为图像下方填充像素个数
#left为图像左侧填充像素个数
#right为图像右侧填充像素个数
#value为填充的颜色
im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)
#im为输入图像
#stride=32,表示长宽需要被32整除
#ratios[0],取值为0~1,表示待填充像素在图片上方填充比例
#如果图片高度上需要填充dh个像素,那么图片上方填充dh*ratios[0],下方填充dh*(1-ratios[0])个像素。
#ratios[1],取值为0~1,表示待填充像素在图片左侧填充比例
#如果图片宽度上需要填充dw个像素,那么图片左侧填充dw*ratios[1],右侧填充dw*(1-ratios[1])个像素。
#color为填充的颜色
pad_image_stride(im, stride=32, ratios=[0, 0], color=(0, 0, 0))
def pad_image_stride(im, stride=32, ratios=[0, 0], color=(0, 0, 0)):
shape = im.shape[:2]
new_shape = [0, 0]
new_shape[0] = shape[0] - shape[0] % stride + stride
new_shape[1] = shape[1] - shape[1] % stride + stride
dh = max(0, new_shape[0] - shape[0])
dw = max(0, new_shape[1] - shape[1])
top = int(dh * ratios[0])
left = int(dw * ratios[1])
bottom = dh - top
right = dw - left
im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)
return im
def pad_image_stride(im, stride=32, ratios=[0, 0], color=(0, 0, 0)):
shape = im.shape[:2]
new_shape = [0, 0]
new_shape[0] = shape[0] - shape[0] % stride + stride
new_shape[1] = shape[1] - shape[1] % stride + stride
dh = max(0, new_shape[0] - shape[0])
dw = max(0, new_shape[1] - shape[1])
top = int(dh * ratios[0])
left = int(dw * ratios[1])
bottom = dh - top
right = dw - left
im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)
return im
更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。