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 |
边界模式。 |
|
输入 |
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; } |