【OpenCV】(四)—— 边界填充

在OpenCV的图像处理中,边界填充主要用于在图像边缘添加额外的像素。这项技术在多种图像处理任务中都有重要的应用,包括但不限于卷积操作、图像缩放、形态学操作等。

opencv中边界填充的主要方法为copyMakeBorder,其函数原型如下:

复制代码
cv2.copyMakeBorder(src, top, bottom, left, right, borderType[, dst[, value]]) → dst

参数说明

  • src:输入图像。

  • top:在图像顶部添加的边界宽度。

  • bottom:在图像底部添加的边界宽度。

  • left:在图像左侧添加的边界宽度。

  • right:在图像右侧添加的边界宽度。

复制代码
  borderType

:边界类型,常见的有:

  • cv2.BORDER_CONSTANT:常数填充(用一个固定的值填充边界)。

  • cv2.BORDER_REFLECT:反射填充(镜像边缘像素)。

  • cv2.BORDER_REFLECT_101cv2.BORDER_DEFAULT:反射填充,但不包括最边缘的像素。

  • cv2.BORDER_REPLICATE:复制边缘像素。

  • cv2.BORDER_WRAP:循环填充(将图像的另一端的像素值复制到边界处)。

  • dst(可选):输出图像,如果未指定,则自动创建。

  • value(可选):当 borderTypecv2.BORDER_CONSTANT 时,用于指定填充的常数值,默认是黑色(0, 0, 0)。

py 复制代码
img = cv2.imread("cat.jpg")
# 填充大小
top_size,bottom_size,left_size,right_size = (50,50,50,50)
# 五种不同的填充方式
replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType = cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType = cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType = cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType = cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType = cv2.BORDER_CONSTANT,value = 0)
py 复制代码
# 导入matplotlib更方便使用子图展示
import matplotlib.pyplot as plt
plt.subplot(231),plt.imshow(img),plt.title('RORGINAL')
plt.subplot(232),plt.imshow(replicate),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect),plt.title('REFELECT')
plt.subplot(234),plt.imshow(reflect101),plt.title('REFELECT_101')
plt.subplot(235),plt.imshow(wrap),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant),plt.title('CONSTANT')

大概观察一下填充的边界结果就能够理解每种填充方法是怎么样的原理:

相关推荐
八角Z9 分钟前
AI短视频创作实战心得:从玩具到生产力工具亲测
人工智能·机器学习·服务发现·音视频
Sylvia33.11 分钟前
OpenClaw + 数眼智能:Windows/Mac 双系统部署与特价模型接入实战指南
大数据·人工智能
YangYang9YangYan13 分钟前
2026大专财富管理学习数据分析指南
人工智能
Flying pigs~~16 分钟前
深度学习之循环神经网络RNN
人工智能·rnn·深度学习·自然语言处理·循环神经网络
aini_lovee18 分钟前
MATLAB圆锥滚子轴承滚子参数分析程序
人工智能·算法·matlab
瑞通软件源头厂家22 分钟前
瑞通酒店管理系统:开启酒店成本控制智能新篇
大数据·人工智能
ホロHoro25 分钟前
深度学习路线
人工智能·深度学习
嫂子开门我是_我哥37 分钟前
心电域泛化研究从0入门系列 | 第二篇:心电信号预处理全攻略——扫清域泛化建模的第一道障碍
人工智能·算法·ecg
XuecWu339 分钟前
Karpathy的AutoResearch与Gemini三层 Agent 架构后的相通设计逻辑
人工智能·深度学习·语言模型·自然语言处理
后端小肥肠1 小时前
别再花钱找人“养虾”了!腾讯版OpenClaw发布,零门槛把AI塞进微信!
人工智能·agent