将带有零的 Mat 内核填充到 Image 的大小

Pad a Mat kernel with zeros to the size of Image

本文关键字:Image 填充 Mat 内核      更新时间:2023-10-16

在 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);

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

它就像下面一样简单。

// 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;