码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:也会   计算   image   原来   replicate   ima   asa   效果   none   

边界填充

涉及到的函数:
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 计算机视觉之图像基本操作

标签:也会   计算   image   原来   replicate   ima   asa   效果   none   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!