首页 > 编程笔记 > Python笔记 阅读:6

OpenCV copyMakeBorder():图像添加边框(附带实例)

在 OpenCV 中,可以使用函数 copyMakeBorder() 为图像设置边界。该函数可以为图像定义额外的填充(边框),原始边缘的行或列被复制成额外的边框中。

copyMakeBorder() 函数声明如下:
cv.copyMakeBorder(src, top, bottom, left, right, borderType[, dst[, value]]) -> dst
各个参数的含义如下:
参数 value 默认值为 0,当borderType 取值为 BORDER_CONSTANT 时,这个参数表示边界值。dst 表示输出图像,和原图像有一样的深度,大小为 Size(src.cols + left +right, src.rows + top+ bottom)。

【实例】为图像加上边框。
import cv2
import numpy as np

img = cv2.imread('test.jpg')
#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,0,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()
在上述代码中,多次调用了 copyMakeBorder() 函数,主要区别是参数 borderType 的值不同(边框效果不同)。

运行工程,结果如下图所示:

相关文章