opencv 均值滤波 c++
时间: 2023-09-10 17:10:45 浏览: 104
均值滤波是一种最简单的线性滤波方法,它的基本思想是用一个正方形窗口去覆盖图像中的每个像素点,然后对该像素点和它周围的邻域像素点进行求平均值操作,得到一个新的像素值作为该像素点的输出值。
以下是使用OpenCV库实现均值滤波的C++代码示例:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat src = imread("lena.jpg"); // 读取原始图像
if (src.empty())
{
cout << "Could not open or find the image" << endl;
return -1;
}
Mat dst; // 定义输出图像
blur(src, dst, Size(5, 5)); // 执行均值滤波操作
namedWindow("Original Image", WINDOW_NORMAL);
namedWindow("Blur Image", WINDOW_NORMAL);
imshow("Original Image", src);
imshow("Blur Image", dst);
waitKey(0);
return 0;
}
```
在这个示例中,我们使用了OpenCV中的`blur()`函数来执行均值滤波操作。该函数的第一个参数是输入图像,第二个参数是输出图像,第三个参数是指定滤波窗口大小的`Size`类型变量。在这里,我们将窗口大小设为`5x5`,即在每个像素周围取一个`5x5`的区域进行求平均值。
最后,使用`imshow()`函数将原始图像和处理后的图像显示出来,并使用`waitKey()`函数等待用户按下任意键后关闭窗口。
阅读全文