copyMakeBorder

函数功能

copyMakeBorder用于图像边界扩展的函数。它可以在图像的四周添加边界,常用于数据扩充、避免边缘效应或者给图像添加装饰性边框。

函数接口

1
void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value = Scalar());

参数

参数名

描述

取值范围

输入/输出

src

输入图像。

非空

输入

dst

输出图像。

Mat类型

输入

top

顶部边界大小。

(0,inf)

输入

bottom

底部边界大小。

(0,inf)

输入

left

左侧边界大小。

(0,inf)

输入

right

右侧边界大小。

(0,inf)

输入

borderType

边界模式。

  • BORDER_CONSTANT
  • BORDER_REPLICATE
  • BORDER_REFLECT
  • BORDER_WRAP等

输入

value

用于填充边界的常数值(仅对BORDER_CONSTANT有效)。

(0,inf)

输入

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

int main() {
    // 读取图像
    Mat src = imread("input.jpg");
    if (src.empty()) {
        std::cerr << "无法加载图像!" << std::endl;
        return -1;
    }

    // 设定边界大小
    int top = 10, bottom = 10, left = 20, right = 20;

    // 扩展后的图像
    Mat dst;
    copyMakeBorder(src, dst, top, bottom, left, right, BORDER_CONSTANT, Scalar(255, 255, 255));

    // 显示结果
    imshow("原始图像", src);
    imshow("扩展后图像", dst);
    waitKey(0);

    return 0;
}