其作用是复制图像并且制作边界(处理边界卷积):
void cvCopyMakeBorder (
const CvArr *src, CvArr *dst, CvPoint offset,
int bordertype, CvScalar value = cvScalarAll ( 0 ));
src
:输入图像。dst
:输出图像。offset
:输入图像(或者其ROI
)欲拷贝到的输出图像长方形的左上角坐标(如果以左下角为原点,那就是左下角坐标)。bordertype
:已拷贝的原图像长方形的边界的类型:
IPL_BORDER_CONSTANT
:填充边界为固定值,值由函数最后一个参数指定。IPL_BORDER_REPLICATE
:边界用上下行或者左右列来复制填充。
其他两种IPL
边界类型IPL_BORDER_REFLECT
和IPL_BORDER_WRAP
现已不支持。
value
:如果边界类型为IPL_BORDER_CONSTANT
,那么此为边界像素的值。
#include "highgui.h"
#include "cv.h"
int main ( int argc, char **argv ) {
IplImage *src, *dst;
src = cvLoadImage ( "timg1.jpg", -1 );
dst = cvCreateImage ( cvSize ( src->width + 100, src->height + 100 ), IPL_DEPTH_8U, 3 );
cvNamedWindow ( "src", 0 );
cvShowImage ( "src", src );
cvNamedWindow ( "filtering", 0 );
cvCopyMakeBorder ( src, dst, cvPoint ( 1, 1 ), IPL_BORDER_CONSTANT ); /* 填充边界固定值,黑色 */
cvShowImage ( "dst", dst );
cvCopyMakeBorder ( src, dst, cvPoint ( 1, 1 ), IPL_BORDER_REPLICATE ); /* 复制边界 */
cvShowImage ( "filtering", dst );
cvWaitKey ( 0 );
cvReleaseImage ( &src );
cvReleaseImage ( &dst );
cvDestroyAllWindows();
return ( 0 );
}