cv::copymakeborder
时间: 2024-09-20 18:03:54 浏览: 14
`cv::copyMakeBorder` 是 OpenCV 中的一个功能强大的图像边界填充函数,用于在原始图像的边缘添加指定大小的边界。它有四个主要操作模式:
1. 当 `src` 和 `dst` 的尺寸相等且它们的像素相同(即源和目标都是同一个Mat对象),函数会直接返回,不做任何操作。
2. 如果 `src` 和 `dst` 大小相同但来源不同,`copyMakeBorder` 会使用 `Mat::copyTo` 函数来复制数据。
3. 当边界类型需要插值时(如 `BORDER_CONSTANT`, `BORDER_REPLICATE`, 或 `BORDER_REFLECT` 等),函数会调用 `copyMakeBorder_8u` 进行插值处理,适用于单通道(如灰度图像)的8位无符号整数数组。
4. 如果边界是常量值(如使用 `BORDER_CONSTANT` 并指定了具体的边界颜色或值),则调用 `copyMakeConstBorder_8u`,此操作会保持边界值不变。
下面是一个简单的示例,展示了如何使用 `cv::copyMakeBorder` 在图像四周添加白色边框:
```cpp
#include <opencv2/opencv.hpp>
cv::Mat img = ...; // 原始图像
int borderSize = 10; // 边界宽度
cv::Scalar borderColor(255, 255, 255); // 白色
// 添加边界
cv::Mat borderedImg;
cv::copyMakeBorder(img, borderedImg, borderSize, borderSize, borderSize, borderSize,
cv::BORDER_CONSTANT, borderColor);
// 查看结果
cv::imshow("Original Image", img);
cv::imshow("Bordered Image", borderedImg);
cv::waitKey();
```