中值滤波
void medianBlur(
InputArray src,
OutputArray dst,
int Ksize //只能3,5,7,9后的奇数
)
代码如下:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
//载入图像
Mat image = imread("1.jpg");
//创建窗口
namedWindow("中值滤波原图");
namedWindow("中值滤波效果图");
imshow("中值滤波原图", image);
//进行滤波
Mat out;
medianBlur(image, out, 7);
imshow("中值滤波效果图", out);
waitKey(0);
return 0;
}
运行结果:
双边滤波bilateralFilter
void bilateralFilter(
InputArray src,
OutputArray dst,
Int d,
double sigmaColor,
double sigmaSpace,
int borderType=BORDER_DEFAULT
)
关于第三个参数:
每个像素领域的直径 负数 的话会从第四个参数推导出
如果值越大说明像素里面有越来越宽的值会在一起
代码如下:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
//载入图像
Mat image = imread("1.jpg");
//创建窗口
namedWindow("双边滤波原图");
namedWindow("双边滤波效果图");
imshow("双边滤波原图", image);
//进行滤波
Mat out;
bilateralFilter(image, out, 50, 50 * 2, 50 / 2);
imshow("双边滤波效果图", out);
waitKey(0);
return 0;
}
运行如下: