函数原型
void medianBlur( InputArray src, OutputArray dst, int ksize );
参数说明
- InputArray类型的src,输入图像,如Mat类型。
- OutputArray类型的dst,输出图像。
- int类型的ksize,内核的大小,比如3,5,只能为奇数。
测试代码
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { cv::Mat src = imread("girl.jpg"); cv::Mat src1 = src.clone(); for (int i = 0; i < src.rows;i=i+10) { for (int j = 0; j < src.cols; j=j+10) { src1.at<Vec3b>(i, j)[0] = saturate_cast<uchar>(0); src1.at<Vec3b>(i, j)[1] = saturate_cast<uchar>(0); src1.at<Vec3b>(i, j)[2] = saturate_cast<uchar>(0); } } cv::Mat result; cv::medianBlur(src, result, 3); imshow("original", src); imshow("noise", src1); imshow("result", result); waitKey(0); return 0; }
测试效果
图1 加入噪声
图2 滤波效果图
中值滤波是比较简单的一种滤波操作,对滤波窗口内的数据进行排列取中值,可有效去除零散的噪点~
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!