RGB的彩色图像读取到Python中即为三维的数组形式,所以边缘填充可以使用numpy中对数组的填充函数来实现。只是我们需要指定每一维度的填充值,对于图像,我们通常只需要填充长和宽两个维度,而第三个是通道此维度通常是不需要填充的。
import cv2
import numpy as np
img_path = "D://001.jpg"
img_bgr = cv2.imread(img_path)
print(img_bgr.shape[:2]) #原始图片大小:(345, 500)
#上下左右均填充20个单位的0像素
img_bgr = np.pad(img_bgr, ((20, 20), (20, 20), (0, 0)), mode='constant', constant_values=0)
print(img_bgr.shape[:2]) #填充后图片大小:(385, 540)
cv2.imwrite("D://001_pad.jpg", img_bgr)
原图和效果图如下(这里将上、下、左、右都填充了0像素,边缘呈现黑色):
涉及函数如下: