对图像进行某些操作时,如卷积等,需要考虑边界处理问题。 我现在需要沿水平方向依次以截取大小为(src.rows,2*width+1)的子图。当离左右边界小于等于width时,就不能像其他像素点那样截取。有两种处理方法,一个是直接不处理这些位置(单要求对结果没有影响);第二就是左右各加weidth宽的边界(像素值为0)。这里可以用c接口中的cvcopyMakeBorder函数;c++接口中的copyMakeBorder函数。 函数介绍 void copyMakeBorder( const Mat& src, Mat& dst,int top, int bottom, int left, int right,int borderType, const Scalar& value=Scalar() ); 参数: src:源图 dst:目标图 top,bottom,left,right:上下左右四个方向分别需要增加多宽的边界 borderType:边界类型,来决定如何赋值新增加的边界。 BORDER_CONSTANT:使用常数(value参数)填充边界(默认为0) BORDER_REPLICATE:复制图像最邻近的行或列 value:如果类型为BORDER_CONSTANT时,新增像素赋值为value,默认为0。 注:opencv 2.1 c++接口 |