opencv的padding方式进行整理和测试。opencv copyMakeBorder函数支持五种padding扩充方式,函数原型如下:
def copy_make_border(src, top, bottom, left, right, borderType, dst=None, value=None):
""" 扩充图像边界
:param src: 输入图像
:param top, bottom, left, right: 对应的上下左右四边界扩充像素数
:param borderType: 支持五种边界扩展方式
:param dst: 输出图
:param value: borderType为'constant'时有效, 设置填充的像素值.
:return: 输出图
"""
1、cv2.BORDER_CONSTANT-固定值填充方式
四个边各添加50个像素的固定值:
import cv2
img = cv2.imread("dog.jpg")
ret = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=(128,128,128))
2、cv2.BORDER_REFLECT-边界元素的镜像方式
四个边各进行50个像素的镜像,比如:fedcba|abcde-fgh|hgfedcb。
import cv2
img = cv2.imread("dog.jpg")
ret = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_REFLECT)
2'、cv2.BORDER_DEFAULT-边界元素的镜像方式
与cv2.BORDER_REFLECT略有不同,实现中cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT。
import cv2
img = cv2.imread("dog.jpg")
ret = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_DEFAULT)
3、cv2.BORDER_REPLICATE-重复最后一个元素
import cv2
img = cv2.imread("dog.jpg")
ret = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_REPLICATE)
4、cv2.BORDER_WRAP-镜像互换方式
import cv2
img = cv2.imread("dog.jpg")
ret = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_WRAP)