我必须从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以获得更大的对象。有人帮助我改进代码。
答案 0 :(得分:1)
(因为它解决了OP的问题,我正在回答我的评论)
您可以在OpenCV中使用 copyMakeBorder()
功能来填充您喜欢的任何方向的元素,并且它支持多种类型的填充。请参阅文档:http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=makeborder#copymakeborder
BORDER_CONSTANT
将添加一个常量值。
BORDER_REPLICATE
会复制边框元素,我认为这就是您在问题中所需要的。