#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace std;
using namespace cv;
/// 全局变量
int MAX_KERNEL_LENGTH = 31;
Mat src; Mat dst;
/*for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
{
blur(src, dst, Size(i, i), Point(-1, -1));
}
*/
blur(src, dst, Size(3, 3), Point(-1, -1));
imshow("均值平滑", dst);
/// 使用高斯平滑
/*for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
{
GaussianBlur(src, dst, Size(i, i), 0, 0);
}
*/
GaussianBlur(src, dst, Size(5, 5), 0, 0);
imshow("高斯平滑", dst);
/// 使用中值平滑
/*
for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
{
medianBlur(src, dst, i);
}
*/
medianBlur(src, dst, 3);
imshow("中值平滑", dst);
/// 使用双边平滑
for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2)
{
bilateralFilter(src, dst, i, i * 2, i / 2);
}
imshow("双边平滑", dst);
waitKey(0);
return 0;
}
注意图片的位置,各种方法的参数可调,不同参数模糊的结不同,这里就不一一展示了,不同方法模糊程序运行结果图: