目录
一、引言
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()
: 最后,这行代码关闭所有打开的图像窗口,使程序能够正常退出。