opencv+c++高斯滤波
时间: 2023-08-30 16:11:31 浏览: 122
高斯滤波是一种常用的图像滤波算法,可以用于去除图像中的噪声。OpenCV库提供了高斯滤波的实现,下面是使用OpenCV和C++实现高斯滤波的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取图像
Mat image = imread("test.jpg");
if (image.empty())
{
cout << "Could not open or find the image" << endl;
return -1;
}
// 高斯滤波
Mat gaussian_image;
GaussianBlur(image, gaussian_image, Size(3, 3), 0);
// 显示原图和滤波后的图像
namedWindow("Original Image", WINDOW_NORMAL);
namedWindow("Gaussian Image", WINDOW_NORMAL);
imshow("Original Image", image);
imshow("Gaussian Image", gaussian_image);
waitKey(0);
return 0;
}
```
在上述代码中,首先使用`imread`函数读取待处理的图像,然后调用`GaussianBlur`函数对图像进行高斯滤波,最后使用`imshow`函数显示原图和滤波后的图像。
`GaussianBlur`函数的参数列表如下:
```c++
void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT);
```
- `src`:输入图像。
- `dst`:输出图像。
- `ksize`:高斯核的大小,即卷积核的大小。它的值必须是正奇数,例如(3, 3)、(5, 5)、(7, 7)等。
- `sigmaX`:在X方向上的高斯核标准差。
- `sigmaY`:在Y方向上的高斯核标准差。如果sigmaY的值为0,则使用sigmaX的值。
- `borderType`:表示边界填充方式,具体取值可以参考OpenCV文档。
注意,高斯滤波会使图像变模糊,所以需要根据实际需求选择适当的滤波参数。
阅读全文