cv.copyMakeBorder(img,top, bottom, left, right ,borderType)
img:需要填充的图像;
- top:图像上边界需要填充的像素点;
- bottom:图像下边界需要填充的像素点;
- left:图像左边界需要填充的像素点;
- right:图像右边界需要填充的像素点;
- borderType:图像填充的方法。
图像填充方法
- BORDER_REPLICATE:复制法,也就是复制最边缘像素。
- BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
- BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
- BORDER_WRAP:外包装法abcdefgh|abcdefgh|abcdefg
- BORDER_CONSTANT:常量法,常数值填充,需要在设置一个value值,已显示填充的颜色。
import cv2
import matplotlib.pyplot as plt
import numpy as np
img = cv2.imread("./images/img_xtx2.jpg")
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
top_size,bottom_size,left_size,right_size = (50,50,50,50)
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0)
plt.imshow(img)
plt.show()
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(reflect101, '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()
cv2.waitKey(0)
cv2.destroyAllWindows()