目录
1--均值滤波模糊
2--高斯滤波模糊
3--中值滤波模糊
4--高斯双边滤波模糊
5--代码展示
cv::blur(src, dst, ksize, anchor),anchor表示锚点,默认值为(-1, -1)表示内核的中心;
cv::blur(src, dst1, cv::Size(3, 3), cv::Point(-1, -1));
cv::GaussianBlur(src, dst, ksize, sigmaX, sigmaY),sigmaX表示X方向上的高斯核标准差,sigmaY表示Y方向上的高斯核标准差;
cv::GaussianBlur(src, dst2, cv::Size(5, 5), 11, 11); // 核大小Size必须为奇数
cv::medianBlur(src, dst, ksize),中值滤波能够很好地过滤椒盐噪声;
cv::medianBlur(src, dst3, 3);
API参数解释参考,高斯双边滤波模糊可以过滤噪声,同时保持边缘特征(相对于高斯滤波的优点);
cv::bilateralFilter(src, dst4, 15, 300, 3);
① 代码:
#include
# include
using namespace std;
int main(int argc, char** argv){
cv::Mat src;
src = cv::imread("./test1.jpg");
if (src.empty()){
printf("could not load image..\n");
return -1;
}
cv::imshow("input", src);
// 均值滤波模糊
cv::Mat dst1;
cv::blur(src, dst1, cv::Size(3, 3), cv::Point(-1, -1)); // 第三个参数和核的大小
cv::imshow("blur demo", dst1);
// 高斯滤波模糊
cv::Mat dst2;
cv::GaussianBlur(src, dst2, cv::Size(5, 5), 11, 11); // 核大小Size必须为奇数
cv::imshow("gaussian demo", dst2);
// 中值滤波模糊
cv::Mat dst3;
cv::medianBlur(src, dst3, 3);
cv::imshow("medianBlur demo", dst3);
// 高斯双边滤波模糊
cv::Mat dst4;
cv::bilateralFilter(src, dst4, 15, 300, 3);
cv::imshow("bilateralFilter demo", dst4);
cv::waitKey(0);
return 0;
}
② 结果: