opencv之為影象新增邊界的方法示例
阿新 • • 發佈:2020-01-09
我們經常會有對影象邊緣做擴充套件的需求.比如
希望卷積後得到的矩陣大小不變希望改變影象大小,但是不改變寬高比opencv實現
opencv中使用copyMakeBorder()來完成這一功能
api
- src是原影象矩陣
- dst是新影象矩陣
- top/bottom/left/right是邊界擴充套件的大小(比如5就代表5個畫素)
- borderType
- 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()
效果如下:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。