python+opencv实现图像的padding

一、目的

比如我有一张 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)

猜你喜欢

转载自blog.csdn.net/sdhdsf132452/article/details/129516759