c++ opencv高斯滤波填充边界
时间: 2023-07-24 08:35:29 浏览: 40
在 OpenCV 中,高斯滤波可以使用函数 `GaussianBlur()` 实现。该函数支持自动填充边界,可以使用 `BORDER_DEFAULT` 参数指定边界填充方式,具体用法如下:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat src = imread("input.jpg");
Mat dst;
GaussianBlur(src, dst, Size(5, 5), 0, 0, BORDER_DEFAULT);
imshow("input", src);
imshow("output", dst);
waitKey();
return 0;
}
```
其中 `Size(5, 5)` 指定了高斯核的大小,第五个参数为 0 表示根据核大小自动计算高斯函数的标准差,第六个参数 `BORDER_DEFAULT` 指定了边界填充方式为默认方式,即使用复制边界的方式进行填充。如果需要使用其他的边界填充方式,可以选择以下常量:
- `BORDER_CONSTANT`:使用常量填充边界。
- `BORDER_REFLECT`:以边界为对称轴,对超出边界的像素进行镜像。
- `BORDER_REFLECT_101`:与 `BORDER_REFLECT` 类似,但不包括边界本身。
- `BORDER_REPLICATE`:复制边界像素。
- `BORDER_WRAP`:像素超出边界时使用另一端的像素进行填充。
例如,如果需要使用常量填充边界,可以使用以下代码:
```c++
GaussianBlur(src, dst, Size(5, 5), 0, 0, BORDER_CONSTANT, Scalar(0, 0, 0));
```
其中 `Scalar(0, 0, 0)` 指定了常量填充的像素值为黑色。
阅读全文