vs2017+opencv均值滤波图像处理

输出的两张图片一直是重叠在一起,没办法让他们拉开,有没有专家指导怎么解决,还是我软件安装的问题,求指点!

img
下面是我在站里找到代码


#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include<ctime>

using namespace cv;
using namespace std;

//均值滤波
void AverFiltering(const Mat &src, Mat &dst) {

    if (!src.data) return;

    //at访问像素点
    for (int i = 1; i < src.rows; ++i)

        for (int j = 1; j < src.cols; ++j) {

            if ((i - 1 >= 0) && (j - 1) >= 0 && (i + 1) < src.rows && (j + 1) < src.cols) {//边缘不进行处理

                dst.at<Vec3b>(i, j)[0] = (src.at<Vec3b>(i, j)[0] + src.at<Vec3b>(i - 1, j - 1)[0] + src.at<Vec3b>(i - 1, j)[0] + src.at<Vec3b>(i, j - 1)[0] +

                    src.at<Vec3b>(i - 1, j + 1)[0] + src.at<Vec3b>(i + 1, j - 1)[0] + src.at<Vec3b>(i + 1, j + 1)[0] + src.at<Vec3b>(i, j + 1)[0] +

                    src.at<Vec3b>(i + 1, j)[0]) / 9;

                dst.at<Vec3b>(i, j)[1] = (src.at<Vec3b>(i, j)[1] + src.at<Vec3b>(i - 1, j - 1)[1] + src.at<Vec3b>(i - 1, j)[1] + src.at<Vec3b>(i, j - 1)[1] +

                    src.at<Vec3b>(i - 1, j + 1)[1] + src.at<Vec3b>(i + 1, j - 1)[1] + src.at<Vec3b>(i + 1, j + 1)[1] + src.at<Vec3b>(i, j + 1)[1] +

                    src.at<Vec3b>(i + 1, j)[1]) / 9;

                dst.at<Vec3b>(i, j)[2] = (src.at<Vec3b>(i, j)[2] + src.at<Vec3b>(i - 1, j - 1)[2] + src.at<Vec3b>(i - 1, j)[2] + src.at<Vec3b>(i, j - 1)[2] +

                    src.at<Vec3b>(i - 1, j + 1)[2] + src.at<Vec3b>(i + 1, j - 1)[2] + src.at<Vec3b>(i + 1, j + 1)[2] + src.at<Vec3b>(i, j + 1)[2] +

                    src.at<Vec3b>(i + 1, j)[2]) / 9;

            }

            else {//边缘赋值

                dst.at<Vec3b>(i, j)[0] = src.at<Vec3b>(i, j)[0];

                dst.at<Vec3b>(i, j)[1] = src.at<Vec3b>(i, j)[1];

                dst.at<Vec3b>(i, j)[2] = src.at<Vec3b>(i, j)[2];

            }

        }

}

//图像椒盐化
void salt(Mat &image, int num) {

    if (!image.data) return;//防止传入空图

    int i, j;

    srand(time(NULL));

    for (int x = 0; x < num; ++x) {

        i = rand() % image.rows;

        j = rand() % image.cols;

        image.at<Vec3b>(i, j)[0] = 255;

        image.at<Vec3b>(i, j)[1] = 255;

        image.at<Vec3b>(i, j)[2] = 255;
    }
}

void main()
{
    Mat image = imread("F:/3.jpg");

    Mat Salt_Image;

    image.copyTo(Salt_Image);

    salt(Salt_Image, 3000);

    Mat image1(image.size(), image.type());

    Mat image2;

    AverFiltering(Salt_Image, image1);

    imshow("原图", image);

    imshow("自定义均值滤波", image1);
    cv::waitKey();
    getchar();

}

这要怎么解决,我想同时观察原图跟处理过的图

给每一个imshow专门一指定一个窗口cv2.namedWindow()

我画红色的这个地方右键,然后有个移动,点下移动就可以拖动了
img

将cv::waitKey();改成cv::waitKey(2000);