📜  Python OpenCV | cv2.copyMakeBorder() 方法(1)

📅  最后修改于: 2023-12-03 14:46:01.385000             🧑  作者: Mango

Python OpenCV | cv2.copyMakeBorder() 方法

在图像处理中,经常需要扩展图片边缘并用特定的方法填充边缘的值。cv2.copyMakeBorder()方法可以实现将边缘复制成新的边缘大小并填充特定的值。

语法
dst = cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value)

参数说明:

  • src:原始输入图像。
  • topbottomleftright:四个方向上的边缘拓宽量。
  • borderType:边界填充方式,有以下几种可选模式:
    • cv2.BORDER_CONSTANT:常量填充,即填充固定的值。
    • cv2.BORDER_REFLECT:反射填充,即将边界映射到另一侧。
    • cv2.BORDER_REPLICATE:复制填充,即复制边界像素。
    • cv2.BORDER_WRAP:环绕填充,即用相邻的边缘像素填充。
  • value:设置常量填充时的填充值。

返回值:

  • dst:输出图像。
示例

以下是一个将一张图像从中心开始拓宽数量为100的像素大小,并进行复制填充的示例:

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('lenna.png')
height, width = img.shape[:2]
top, bottom = height//2, height - height//2
left, right = width//2, width - width//2

# 复制填充方式
dst = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_REPLICATE)

plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.subplot(122), plt.imshow(dst), plt.title('Copy Make Border')
plt.show()

运行该程序将生成包含原始图像和拓展后使用复制填充方式的图像的可视化结果。

总结

cv2.copyMakeBorder()方法在图像处理中使用频率较高,可以快捷地实现对图像边界的拓展填充。该方法还支持不同的边界填充模式。在使用该方法时,需要根据输入图像和需要保留的信息来调整边缘填充的方式和填充的数量。