1

我必须将这个函数从 Matlab 翻译成 C:

 impadded = padarray(impadded, padSzVec, 'replicate', 'both');

实际上,它填充了复制每行和每列的对象的最后一个元素的数组(获得更大的对象)。

我所做的是:(img是原图)

Mat padded;
padded.create(img.rows + padSize, img.cols + padSize,img.type());
padded.setTo(cv::Scalar::all(0));
padded(Rect(padSize,padSize,img.rows,img.cols);
img.copyTo(padded);

我想我正在填充但插入 0 以获得更大的对象。有人帮助我改进代码。

4

1 回答 1

1

(因为它解决了 OP 的问题,所以我将我的评论作为答案)

您可以使用copyMakeBorder()OpenCV 中的函数在您喜欢的任何方向上填充元素,它支持多种类型的填充。请参阅文档:http ://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=makeborder#copymakeborder

BORDER_CONSTANT将添加一个常量值。

BORDER_REPLICATE将照此复制边框元素,我认为这就是您的问题所需要的。

于 2013-05-31T09:08:25.120 回答