OpenCV-Python: cv2.copyMakeBorder()函数详解

文章目录

    • 参考依据
    • 设置边界框
    • 参数
    • 实例

参考依据

OpenCV-Python官方教程:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html

设置边界框

如果你想给你的图片设置边界框,就像一个相框一样的东西,你就可以使用cv2.copyMakeBorder()函数。但其在卷积操作、零填充等也得到了应用,并且可以用于一些数据增广操作。

参数

OpenCV-Python: cv2.copyMakeBorder()函数详解_第1张图片

  1. src : 输入的图片
  2. top, bottom, left, right :相应方向上的边框宽度
  3. borderType:定义要添加边框的类型,它可以是以下的一种:
  • cv2.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)
  • cv2.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射,类似于gfedcb|abcdefgh|gfedcba
  • cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT:和上面类似,但是有一些细微的不同,类似于gfedcb|abcdefgh|gfedcba
  • cv2.BORDER_REPLICATE:使用最边界的像素值代替,类似于aaaaaa|abcdefgh|hhhhhhh
  • cv2.BORDER_WRAP:不知道怎么解释,直接看吧,cdefgh|abcdefgh|abcdefg
  1. value:如果borderType为cv2.BORDER_CONSTANT时需要填充的常数值。

实例

img = cv2.imread('testimg.png')
img = cv2.resize(img,(256,256))
cv2.imshow('origin',img),cv2.waitKey(0),cv2.destroyAllWindows()

replicate = cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_REPLICATE)
cv2.imshow('replicate',replicate),cv2.waitKey(0),cv2.destroyAllWindows()

constant = cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_CONSTANT,value=(255,255,255))
cv2.imshow('constant',constant),cv2.waitKey(0),cv2.destroyAllWindows()

reflect = cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_REFLECT)
cv2.imshow('reflect',reflect),cv2.waitKey(0),cv2.destroyAllWindows()

reflect101 = cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_REFLECT_101)
cv2.imshow('reflect101',reflect101),cv2.waitKey(0),cv2.destroyAllWindows()

wrap = cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_WRAP)
cv2.imshow('wrap',wrap),cv2.waitKey(0),cv2.destroyAllWindows()

OpenCV-Python: cv2.copyMakeBorder()函数详解_第2张图片
OpenCV-Python: cv2.copyMakeBorder()函数详解_第3张图片
OpenCV-Python: cv2.copyMakeBorder()函数详解_第4张图片
OpenCV-Python: cv2.copyMakeBorder()函数详解_第5张图片
OpenCV-Python: cv2.copyMakeBorder()函数详解_第6张图片
OpenCV-Python: cv2.copyMakeBorder()函数详解_第7张图片

你可能感兴趣的:(学点工具,opencv,计算机视觉,python)