python+opencv实现图像的padding

该文章介绍了一个Python代码示例,利用OpenCV的copyMakeBorder函数将一张2x2的图片在四周添加像素以扩展为4x4大小,保持原内容不变,填充值可设置为0。代码中定义了pad_img函数,接受图片、目标宽度、高度和填充值作为参数,返回处理后的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目的

比如我有一张 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值