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

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

相关推荐
_志哥_2 小时前
Superpowers 技术指南:让 AI 编程助手拥有超能力
人工智能·ai编程·测试
YongGit3 小时前
OpenClaw 本地 AI 助手完全指南:飞书接入 + 远程部署实战
人工智能
程序员鱼皮4 小时前
斯坦福大学竟然开了个 AI 编程课?!我已经学上了
人工智能·ai编程
星浩AI5 小时前
Skill 的核心要素与渐进式加载架构——如何设计一个生产可用的 Skill?
人工智能·agent
树獭非懒5 小时前
告别繁琐多端开发:DivKit 带你玩转 Server-Driven UI!
android·前端·人工智能
阿尔的代码屋5 小时前
[大模型实战 07] 基于 LlamaIndex ReAct 框架手搓全自动博客监控 Agent
人工智能·python
小小小怪兽5 小时前
🔨聊一聊Skills
人工智能·agent
穿过生命散发芬芳5 小时前
OpenClaw:开启OpenCloudOS 操作系统智能运维初体验
人工智能·aigc
老金带你玩AI6 小时前
Claude Code自动记忆来了!配合老金三层记忆系统全开源!加强Plus!
人工智能
Halo咯咯6 小时前
无限免费 OpenClaw:接入本地模型后,你的 AI Agent 就可以 24 小时自动干活(Mac Mini 可用)
人工智能