首页 > 其他 > 详细

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

时间:2021-04-18 14:44:03      阅读:42      评论:0      收藏:0      [点我收藏+]

边界填充

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

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

BORDER_CONSTANT :可以用指定的像素去填充图像边界,value可以是一个值,也可以是表示RGB的一个元组(value = (0,255,255))
技术分享图片
具体填充方式如下:
技术分享图片

BORDER_REPLICATE :就是用图像最边缘的像素进行填充
效果如下:技术分享图片
具体填充方式如下:
技术分享图片

BORDER_WRAP:比如最下面的边界要用图像最上面的像素去填充,最左边的边界要用图像最右边的像素进行填充,同理,其他边界一样,比如下方这个图,仔细观察就可以明白这种填充方式。
技术分享图片
具体填充方式:
技术分享图片

BORDER_REFLECT:就是以图像边界为轴以镜像的方式(图像的边界像素也会被用来填充)将像素填充到需要填充的范围内。如下图所示:
技术分享图片
具体方式如下图实验:
代码:

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:
技术分享图片
用reflect填充后的图像:
技术分享图片

BORDER_REFLECT_101:和BORDER_REFLECT其实是一样的,只不过是在填充的时候,不用图像的边界像素去镜像填充。具体填充方式如下图所示:
技术分享图片

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

原文:https://www.cnblogs.com/yolo-m/p/14672472.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!