【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')

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

相关推荐
聆风吟º20 分钟前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
Codebee2 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º3 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys3 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56783 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子3 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能4 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144874 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile4 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算
人工不智能5774 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert