OpenCV对图像做边界填充

目录

一、引言

1、什么是opencv?

2、python的opencv如何实现图像的边界填充?

3、cv2.copyMakeBorder()的参数有哪些?

二、代码实现

1、已有资源(img_2.png)

2、处理数据

3、显示处理后的图像

4、处理后的图片为:

1)原图:

2)常数填充:

3)反射填充:

4)反射101填充:

5)复制映射:

6)环绕映射:


一、引言

1、什么是opencv?

OpenCV(Open Source Computer Vision Library)是一个广泛用于计算机视觉和图像处理的开源库,它提供了各种功能,包括图像的边界填充。边界填充是一种常见的图像处理操作,通常用于扩展图像的尺寸或处理边缘像素。

2、python的opencv如何实现图像的边界填充?

cv2.copyMakeBorder()是OpenCV库中的一个函数,用于给图像添加额外的边界(padding)。

3、cv2.copyMakeBorder()的参数有哪些?

copyMakeBorder(src: UMat, top: int, bottom: int, left: int, right: int, borderType: int, dst: UMat | None = ..., value: cv2.typing.Scalar = ...)
它有以下几个参数:
src:要扩充边界的原始图像。
top, bottom, left, right:相应方向上的边框宽度。
borderType:定义要添加边框的类型,它可以是以下的一种:
cv2.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)。
cv2.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射,类似于gfedcba|abcdefgh|hgfedcba。
cv2.BORDER_REFLECT_101 或 cv2.BORDER_DEFAULT:和上面类似,但是有一些细微的不同,类似于gfedcb|abcdefgh|gfedcba
cv2.BORDER_REPLICATE:使用最边界的像素值代替,类似于aaaaaa|abcdefgh|hhhhhhh
cv2.BORDER_WRAP:左右两边替换,cdefgh|abcdefgh|abcdefg

二、代码实现

1、已有资源(img_2.png)

2、处理数据

img = cv2.imread('img.png')
#这行代码加载了名为img.png的图像,并将其存储在变量img中。
top,bottom,left,right = 50,50,50,50
#这行代码定义了要在图像的四个边界上应用的填充大小。在这里,上、下、左、右各有50像素的填充。
constant = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=cv2.BORDER_CONSTANT,value=0)
#这行代码使用cv2.copyMakeBorder函数对图像zl进行了常数填充。填充的颜色值为0(黑色),cv2.BORDER_CONSTANT表示使用常数填充模式。
reflect = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=cv2.BORDER_REFLECT)
#这行代码使用cv2.copyMakeBorder函数对图像zl进行了反射填充。cv2.BORDER_REFLECT101表示使用反射填充模式
reflect101 = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=cv2.BORDER_REFLECT101)
#这行代码使用cv2.copyMakeBorder函数对图像zl进行了反射101填充。cv2.BORDER_REFLECT101表示使用反射101填充模式
replicate = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=cv2.BORDER_REPLICATE)
# 这行代码使用cv2.copyMakeBorder函数对图像zl进行了复制填充。cv2.BORDER_REPLICATE表示使用复制填充模式。
wrap = cv2.copyMakeBorder(img,top,bottom,left,right,borderType=cv2.BORDER_WRAP)
#这行代码使用cv2.copyMakeBorder函数对图像zl进行了环绕填充。cv2.BORDER_WRAP表示使用环绕填充模式。

3、显示处理后的图像

cv2.imshow('ORIGINAL', img)
# 这行代码显示原始图像。'ORIGINAL'是窗口标题,img是原始图像的变量名。
cv2.waitKey(0)
#这行代码等待用户按下键盘上的任意键,以便在查看图像后继续执行代码。
cv2.imshow('CONSTANT', constant)
#这行代码显示常数填充后的图像。'CONSTANT'是窗口标题,constant是常数填充后的图像的变量名。
cv2.waitKey(0)
cv2.imshow('REFLECT', reflect)
#这行代码显示反射填充后的图像。'REFLECT'是窗口标题,reflect是反射填充后的图像的变量名。
cv2.waitKey(0)
cv2.imshow('REFLECT_101', reflect101)
cv2.waitKey(0)
cv2.imshow('REPLICATE', replicate)
cv2.waitKey(0)
cv2.imshow('WRAP', wrap)
cv2.waitKey(0)
cv2.destroyAllWindows()
: 最后,这行代码关闭所有打开的图像窗口,使程序能够正常退出。

4、处理后的图片为:

1)原图:

2)常数填充:

3)反射填充:

4)反射101填充:

5)复制映射:

6)环绕映射:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值