基于opencv,c++实现中值滤波
时间: 2023-08-07 17:41:02 浏览: 165
中值滤波是一种常用的图像滤波方法,可以去除图像中的椒盐噪声等离群点。下面是基于OpenCV和C++实现中值滤波的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("lena.jpg", IMREAD_GRAYSCALE); // 读取灰度图像
Mat dst;
medianBlur(img, dst, 3); // 中值滤波,窗口大小为3x3
imshow("Original Image", img);
imshow("Median Filtered Image", dst);
waitKey(0);
return 0;
}
```
在上面的示例代码中,首先使用`imread`函数读取一张灰度图像,然后使用`medianBlur`函数对图像进行中值滤波,其中第三个参数为滤波窗口的大小,这里为3x3。最后使用`imshow`函数显示原始图像和中值滤波后的图像,并使用`waitKey`函数等待用户按下按键。
相关问题
opencv c++ 中值滤波
中值滤波是一种常见的图像处理方法,可以用于去除图像中的噪声。在OpenCV C++中,可以使用medianBlur函数来实现中值滤波。该函数的定义如下:
```cpp
void medianBlur(InputArray src, OutputArray dst, int ksize);
```
其中,src表示输入图像,dst表示输出图像,ksize表示滤波器的大小,必须是大于1的奇数。下面是一个使用medianBlur函数进行中值滤波的例子:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat src = imread("lena.jpg");
if (src.empty())
{
return -1;
}
Mat dst;
medianBlur(src, dst, 5);
imshow("src", src);
imshow("dst", dst);
waitKey();
return 0;
}
```
该例子中,我们首先读入一张图像,然后使用medianBlur函数对其进行中值滤波,最后将原图和滤波后的图像分别显示出来。需要注意的是,该例子中的滤波器大小为5,如果需要使用其他大小的滤波器,只需要修改ksize的值即可。
C++ opencv 快速中值滤波
以下是C++ OpenCV实现快速中值滤波的示例代码:
```cpp
cv::Mat fastMedianFilter(const cv::Mat& src, int ksize = 3) {
cv::Mat dst;
cv::medianBlur(src, dst, ksize);
return dst;
}
```
这段代码使用了OpenCV提供的`medianBlur`函数来实现中值滤波。`medianBlur`函数接受输入图像`src`和滤波窗口大小`ksize`作为参数,并返回滤波后的图像`dst`。