opencv学习日记——图像方框滤波

opencv学习日记——图像方框滤波

1、图像结果


opencv学习日记——图像方框滤波_第1张图片

2、代码部分

#include
#include

using namespace std;
using namespace cv;

int main()
{
     

    //读取图片
    Mat img2 = imread("nazha1.jpg");
    //读取灰度图
    Mat gray2 = imread("nazha1.jpg", IMREAD_ANYDEPTH);
    //给空矩阵进行赋值
    Mat img_noise = Mat::zeros(img2.rows, img2.cols, img2.type());
    Mat gray_noise = Mat::zeros(gray2.rows, gray2.cols, gray2.type());
    RNG rng;
    //rng.fill(空矩阵, 高斯噪声,均值, 方差 )
    rng.fill(img_noise, RNG::NORMAL, 10, 20);
    rng.fill(gray_noise, RNG::NORMAL, 15, 30);

    // imshow("img噪声", img_noise);
    // imshow("gray噪声", gray_noise);

    //给图片添加噪声
    img2 = img2 + img_noise;
    gray2 = gray2 + gray_noise;

    imshow("img加噪声", img2);
    imshow("gray加噪声", gray2);

    Mat img1, img3, gray1, gray3;
    //方框滤波
    //boxFilter(原图, 输出, 格式, 滑窗, 中心位置, 是否归一化)
    boxFilter(img2, img1, -1, Size(3, 3), Point(-1, -1), true);
    boxFilter(gray2, gray1, -1, Size(3, 3), Point(-1, -1), false);
    Mat img2_32F, gray2_32F;
    //转换成32F格式
    img2.convertTo(img2_32F, CV_32F, 1.0 / 255);
    gray2.convertTo(gray2_32F, CV_32F, 1.0 / 255);

    imshow("img_32F", img2_32F);
    imshow("gray_32F", gray2_32F);

    //boxFilter(原图, 输出, 格式, 滑窗, 中心位置, 是否归一化, 填充)
    sqrBoxFilter(img2_32F, img3, -1, Size(3, 3), Point(-1, -1), true, BORDER_CONSTANT);
    sqrBoxFilter(gray2_32F, gray3, -1, Size(3, 3), Point(-1, -1), false);

    imshow("img去噪1", img1);
    imshow("gray去噪1", gray1);
    imshow("img去噪2", img3);
    imshow("gray去噪2", gray3);


    waitKey(0);

    return 0;
}

你可能感兴趣的:(opencv,opencv)