一、目的
比如我有一张 2 × 2 2\times2 2×2大小的图片,需要把它resize
成 4 × 4 4\times4 4×4大小,但是又不想直接resize
,而是保证原 2 × 2 2\times2 2×2大小的内容不变。这个时候就需要在原始 2 × 2 2\times2 2×2的图像左、右、上、下各加1排各大小的像素,比如全是0。
二、代码
import cv2
def pad_img(img_,w_=1280,h_=720,value_=[0,0,0]):
"""args:
img_: opencv的img\n
w_: 宽
h_: 高
value: padding的值
return: 上下左右各padding之后的opencv的img
"""
h,w,_ = img.shape
top = (h_ - h ) // 2
bottom = (h_ - h ) - top
left = (w_ - w) // 2
right = (w_ - w) - left
pad_img = cv2.copyMakeBorder(img,
top=top,bottom=bottom,
left=left,right=right,
borderType=cv2.BORDER_CONSTANT,
value=value_)
return pad_img
if __name__ == '__main__':
filename = "0002.jpg"
img = cv2.imread(filename)
img_pad = pad_img(img,)
cv2.imwrite(f"pics/{
filename}.jpg",img_pad)
print(f'img_pad.shape = {
img_pad.shape}')
cv2.imshow('pad img',img_pad)
cv2.waitKey(0)