正规电商运营培训班,网站优化招商,做物流网站多少钱,山东省建设监理网站OpenCV copyMakeBorder() 图像边界扩展详解与实战在图像处理和计算机视觉中#xff0c;有时需要在原始图像的四周增加边界#xff08;Padding#xff09;。这种操作在很多场景中都有应用#xff0c;比如#xff1a;卷积神经网络#xff08;CNN#xff09;中的图像预处理…OpenCV copyMakeBorder() 图像边界扩展详解与实战在图像处理和计算机视觉中有时需要在原始图像的四周增加边界Padding。这种操作在很多场景中都有应用比如卷积神经网络CNN中的图像预处理为图像添加装饰性边框保证滤波、卷积等操作不会丢失边缘信息OpenCV 提供了一个非常方便的函数 cv2.copyMakeBorder() 来实现边界扩展。
1. copyMakeBorder() 函数原型
cv2.copyMakeBorder()是OpenCV库中的一个函数用于给图像添加额外的边界(padding)。
dst cv2.copyMakeBorder(src, top, bottom, left, right, borderType[, value])
参数说明参数含义src原始图像top, bottom, left, right上、下、左、右四个方向的边界宽度单位像素borderType边界类型见下文详解value当 borderTypecv2.BORDER_CONSTANT 时需要指定填充的颜色BGR 格式
2. 常用 borderType 类型OpenCV 提供了多种扩展方式不同方式在边缘处理时会有不同效果。cv2.BORDER_CONSTANT用固定颜色填充边界。需要额外指定 value 参数例如 (0, 0, 255) 代表红色。适合纯色边框的效果。cv2.BORDER_REFLECT镜像反射边界边界像素会被复制。模式类似321|123456789|987cv2.BORDER_REFLECT_101 或 cv2.BORDER_REFLECT101也是镜像反射但不复制边界像素本身。模式类似432|123456789|876cv2.BORDER_REPLICATE使用边界像素重复填充。模式类似111|123456789|999cv2.BORDER_WRAP边界使用图像另一侧的像素包裹。模式类似789|123456789|123
3. 示例代码下面的示例会分别展示 5 种 borderType 效果方便直观对比。
import cv2# 读取图片
img cv2.imread(lyf.jpg)# 调整图片大小
img cv2.resize(img, (500, 500))# 设置边界宽度
top, bottom, left, right 100, 100, 100, 100# 1. 设置颜色边界红色
constant cv2.copyMakeBorder(img, top, bottom, left, right,borderTypecv2.BORDER_CONSTANT, value(0, 0, 255))# 2. 镜像反射复制边界像素
reflect cv2.copyMakeBorder(img, top, bottom, left, right, borderTypecv2.BORDER_REFLECT)# 3. 镜像反射不复制边界像素
reflect101 cv2.copyMakeBorder(img, top, bottom, left, right, borderTypecv2.BORDER_REFLECT101)# 4. 重复边界像素
replicate cv2.copyMakeBorder(img, top, bottom, left, right, borderTypecv2.BORDER_REPLICATE)# 5. 包裹方式
wrap cv2.copyMakeBorder(img, top, bottom, left, right, borderTypecv2.BORDER_WRAP)# 显示结果
cv2.imshow(Original, img)
cv2.imshow(BORDER_CONSTANT, constant)
cv2.imshow(BORDER_REFLECT, reflect)
cv2.imshow(BORDER_REFLECT101, reflect101)
cv2.imshow(BORDER_REPLICATE, replicate)
cv2.imshow(BORDER_WRAP, wrap)cv2.waitKey(0)
cv2.destroyAllWindows()4. 运行效果示意原图lyf.jpgBORDER_CONSTANTBORDER_REFLECTBORDER_REFLECT101BORDER_REPLICATEBORDER_WRAP类型效果描述BORDER_CONSTANT边界为纯红色示例中是 (0,0,255)BORDER_REFLECT边界为镜像反射边缘处像素被复制BORDER_REFLECT101边界为镜像反射去掉边缘像素自身BORDER_REPLICATE边界像素直接复制填充BORDER_WRAP边界使用对面边的像素包裹
5.应用场景案例多给几个真实案例读者会立刻想到怎么用图像边框美化 → 用 BORDER_CONSTANT 做彩色相框。深度学习数据增强 → 随机 padding 后再裁剪。全景图拼接 → 避免拼接缝隙处出现黑边。滤波降噪 → 用镜像 padding 防止边缘模糊不均。
6. 小结cv2.copyMakeBorder() 是一个简单而强大的函数可以在图像四周添加不同类型的边界。
在实际应用中图像卷积/滤波前 → 推荐 BORDER_REFLECT 或 BORDER_REFLECT101能保留边缘信息。美化图片 → 推荐 BORDER_CONSTANT可指定任意颜色作为相框。特殊视觉效果 → 可尝试 BORDER_WRAP。掌握它之后你不仅能做图像边界填充还能理解很多计算机视觉算法在“边缘处理”时的逻辑。