OpenCV 计算机视觉之图像基本操作

边界填充

涉及到的函数:
copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None)

其中,填充类型borderType主要的有一下四种类型:

BORDER_CONSTANT :可以用指定的像素去填充图像边界,value可以是一个值,也可以是表示RGB的一个元组(value = (0,255,255))
OpenCV 计算机视觉之图像基本操作
具体填充方式如下:
OpenCV 计算机视觉之图像基本操作

BORDER_REPLICATE :就是用图像最边缘的像素进行填充
效果如下:OpenCV 计算机视觉之图像基本操作
具体填充方式如下:
OpenCV 计算机视觉之图像基本操作

BORDER_WRAP:比如最下面的边界要用图像最上面的像素去填充,最左边的边界要用图像最右边的像素进行填充,同理,其他边界一样,比如下方这个图,仔细观察就可以明白这种填充方式。
OpenCV 计算机视觉之图像基本操作
具体填充方式:
OpenCV 计算机视觉之图像基本操作

BORDER_REFLECT:就是以图像边界为轴以镜像的方式(图像的边界像素也会被用来填充)将像素填充到需要填充的范围内。如下图所示:
OpenCV 计算机视觉之图像基本操作
具体方式如下图实验:
代码:

img_original = np.array([[0,0 ,0 ,0 ,0 ,0],
			 [1,69 ,52 , 32 ,44 ,3],
			 [1,63 ,83 , 38 ,63 ,3],
			 [1 ,36 ,37 , 36 ,37, 3],
			 [1,37 ,37 , 41 ,45 ,3],
			 [1,37 ,38 , 38 ,44 ,3],
			 [1, 42, 42, 36, 40, 3],
			 [1, 69, 52, 32, 44, 3],
			 [1, 63, 83, 38, 63, 3],
			 [1, 36, 37, 36, 37, 3],
			 [1, 37, 37, 41, 45, 3],
			 [2, 2, 2, 2, 2, 2]],dtype=np.uint8)
print("原来的图像img_original:",img_original)
#cv2.imshow("原来的图像img_original:",img_original)
#cv2.waitKey(0)
top,bottom,left,right = (3,3,3,3)
reflect = cv2.copyMakeBorder(img_original,top,bottom,left,right,borderType=cv2.BORDER_REFLECT)
img_reflect = np.asarray(reflect)
print("用reflect填充后的图像:",img_reflect)

实验结果:
原来的图像img_original:
OpenCV 计算机视觉之图像基本操作
用reflect填充后的图像:
OpenCV 计算机视觉之图像基本操作

BORDER_REFLECT_101:和BORDER_REFLECT其实是一样的,只不过是在填充的时候,不用图像的边界像素去镜像填充。具体填充方式如下图所示:
OpenCV 计算机视觉之图像基本操作

上一篇:deepin 安装npm 权限不足


下一篇:对象拷贝