1. 程式人生 > 程式設計 >opencv之為影象新增邊界的方法示例

opencv之為影象新增邊界的方法示例

我們經常會有對影象邊緣做擴充套件的需求.比如

希望卷積後得到的矩陣大小不變希望改變影象大小,但是不改變寬高比opencv實現

opencv中使用copyMakeBorder()來完成這一功能

api

  1. src是原影象矩陣
  2. dst是新影象矩陣
  3. top/bottom/left/right是邊界擴充套件的大小(比如5就代表5個畫素)
  4. borderType
  5. value是擴充的畫素填什麼值

borderType分兩種:

BORDER_CONSTANT
邊緣填充用固定畫素值,比如填充黑邊,就用0,白邊255

BORDER_REPLICATE
用原始影象相應的邊緣的畫素去做填充,看起來有一種把影象邊緣"拉糊了"的效果

opencv示例

import sys
import cv2 as cv

def test():
 src = cv.imread("/home/sc/disk/keepgoing/opencv_test/lights.jpeg") 
 top = int(0.05 * src.shape[0]) # shape[0] = rows
 bottom = top
 left = int(0.04 * src.shape[1]) # shape[1] = cols
 right = left
 
 value = [0,0]
 borderType = cv.BORDER_CONSTANT
 dst1 = cv.copyMakeBorder(src,top,bottom,left,right,borderType,None,value)
 
 borderType = cv.BORDER_REPLICATE
 dst2 = cv.copyMakeBorder(src,value)
 
 cv.imshow("blackborder",dst1)
 cv.imshow("BORDER_REPLICATE",dst2)
 
 if 27 == cv.waitKey():
  cv.destroyAllWindows()
  
test()

效果如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。