opencv之為圖像添加邊界


opencv之為圖像添加邊界

 

我們經常會有對圖像邊緣做擴展的需求.比如

  • 希望卷積后得到的矩陣大小不變
  • 希望改變圖像大小,但是不改變寬高比

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,0] borderType = cv.BORDER_CONSTANT dst1 = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value) borderType = cv.BORDER_REPLICATE dst2 = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value) cv.imshow("blackborder",dst1) cv.imshow("BORDER_REPLICATE",dst2) if 27 == cv.waitKey(): cv.destroyAllWindows() test()

效果如下:

作者: sdu20112013
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎轉載,轉載請注明出處.
 
分類: opencv筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM