opencv 图像填充

定义pad_image_stride函数,将图像的长和宽填充到可以被指定整数整除。这个整数倍通常定义为stride。

一、opencv关键函数

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))

三、pad_image_stride代码

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

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

你可能感兴趣的:(python,数据集,图像填充,pad,copyMakeBorder)