Padarray功能翻译

时间:2013-05-30 00:09:05

标签: matlab opencv pad

我必须从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以获得更大的对象。有人帮助我改进代码。

1 个答案:

答案 0 :(得分:1)

(因为它解决了OP的问题,我正在回答我的评论)

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

BORDER_CONSTANT将添加一个常量值。

BORDER_REPLICATE会复制边框元素,我认为这就是您在问题中所需要的。