1. 程式人生 > >opencv-python庫(cv2)邊緣填充函式copyMakeBorder效果展示

opencv-python庫(cv2)邊緣填充函式copyMakeBorder效果展示

影象涉及卷積運算時,經常要用到0填充,0填充就是一種特殊的邊緣填充,opencv-python庫中用的就是copyMakeBorder()函式,這個函式有多種填充方式。

原圖:

用cv2.BORDER_REPLICATE填充,重複最後一個畫素,程式碼及效果:

img2 = cv2.copyMakeBorder(img1,200,200,200,200,cv2.BORDER_REPLICATE)
#調整繪製尺寸
plt.figure(figsize=(5,5))
plt.imshow(img2,interpolation='bicubic')

使用cv2.BORDER_REFLECT填充,邊界元素的映象:

img3 = cv2.copyMakeBorder(img1,200,200,200,200,cv2.BORDER_REFLECT)

用cv2.BORDER_REFLECT_101填充,跟cv2.BORDER_REFLECT類似:

img3 = cv2.copyMakeBorder(img1,200,200,200,200,cv2.BORDER_REFLECT_101)

肉眼看不出多大區別,但兩幅影象作差,可以看出還是不一樣的:

plt.imshow(img4-img3,interpolation='bicubic')

具體有什麼差別,知道的可以告訴我啊。

用cv2.BORDER_WRAP填充:

img5 = cv2.copyMakeBorder(img1,200,200,200,200,cv2.BORDER_WRAP)

用cv2.BORDER_CONSTANT填充,新增一個指定值的邊界,預設是黑色:

img6 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT)
#新增紅色邊界
#RED = [255,0,0]
#img6 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=RED)

下面3行程式碼是新增指定的紅色邊界。