OpenCV–图像边界填充
语法:
cv.copyMakeBorder(img,top, bottom, left, right ,borderType)
img
:需要填充的图像;top
:图像上边界需要填充的像素点;bottom
:图像下边界需要填充的像素点;left
:图像左边界需要填充的像素点;right
:图像右边界需要填充的像素点;borderType
:图像填充的方法。BORDER_REPLICATE
:复制法,也就是复制最边缘像素。BORDER_REFLECT
:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcbBORDER_REFLECT_101
:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcbaBORDER_WRAP
:外包装法abcdefgh|abcdefgh|abcdefgBORDER_CONSTANT
:常量法,常数值填充,需要在设置一个value值,已显示填充的颜色。
代码示例:
#边界填充
#cv.copyMakeBorder(img,top, bottom, left, right ,borderType)
top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
replicate = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REPLICATE)
reflect = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REFLECT)
reflect_101 = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REFLECT_101)
wrap = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_WRAP)
constant = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_CONSTANT)
#绘制子图
#plt.subplot(2, 3, 5) 和 plt.subplot(235) 是效果是一样的
plt.subplot(231), plt.imshow(img, 'gray'), plt.title('ORIGINAL')
plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title("REPLICATE")
plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT')
plt.subplot(234), plt.imshow(reflect_101, 'gray'), plt.title("REFLECT_101")
plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP')
plt.subplot(236), plt.imshow(constant, 'gray'), plt.title("CONSTANT")
plt.show()