OpenCv3(滤波篇) ---- medianBlur中值滤波

中值滤波将每个像素替换为围绕这个像素得矩形邻域内。小于滤波器面积一半的物体基本上会被滤除,而较大的物体几乎会原封不动的保存下来,所以中值滤波对处理噪声非常有效,能减弱高频分量,同时也影响低频分量。

效果:
在这里插入图片描述

函数原型:

CV_EXPORTS_W void medianBlur( InputArray src, OutputArray dst, int ksize );

src:输入1-、3-或4通道图像;当ksize为3或5时,图像深度应为CV_8U, CV_16U,或CV_32F,对于大孔径,它只能是CV_8U
dst:与src相同大小和类型的目标数组
ksize :孔径线性尺寸;它必须是奇数且大于1,例如:3,5,7…

代码:

void example()
{
    
    
    cv::Mat input = cv::imread("d:\\desktop\\picture\\test.jpg"), output;
    cv::namedWindow("example");
    int blockSize = 1, blockSize_test = 1;
    cv::createTrackbar("blockSize", "example", &blockSize_test, 20);
    for(;;)
    {
    
    
        blockSize = blockSize_test;
        if(blockSize_test < 1)
            blockSize = 1;
        cv::medianBlur(input, output, blockSize*2+1);
        cv::imshow("example", output);
        if(cv::waitKey(100) == 27)
            break;
    }

}

猜你喜欢

转载自blog.csdn.net/qq_42401265/article/details/107774454