使用零填充Mat内核到Image的大小

时间:2018-05-24 22:07:41

标签: c++ opencv filtering

在cpp中使用OpenCv

我需要通过用额外的零填充来将给定Mat内核的大小增加到任何给定图像的大小。

Mat kernel = (Mat_<double>(3,3) <<  1.36, 0.062,  -0.921,
        -0.644198,  1.10, -0.17,
        -0.072951, -1.81485,  2.806);

我在这个post中找到了用零填充整个数组的方法,但我也希望将值保存在内核中。

1 个答案:

答案 0 :(得分:0)

就像下面这么简单。

// this is the input image  
cv::Mat img(100, 100, CV_64FC1);

cv::Mat kernel = (cv::Mat_<double>(3, 3) << 1.36, 0.062, -0.921,
    -0.644198, 1.10, -0.17,
    -0.072951, -1.81485, 2.806);

cv::Mat kernelNew = cv::Mat::zeros(img.size(), CV_64FC1);
kernel.copyTo(kernelNew(cv::Rect(0, 0, kernel.cols, kernel.rows)));
kernel = kernelNew;