CopyMakeBorder函数

  其作用是复制图像并且制作边界(处理边界卷积):

void cvCopyMakeBorder (
    const CvArr *src, CvArr *dst, CvPoint offset,
    int bordertype, CvScalar value = cvScalarAll ( 0 ));
  • src:输入图像。
  • dst:输出图像。
  • offset:输入图像(或者其ROI)欲拷贝到的输出图像长方形的左上角坐标(如果以左下角为原点,那就是左下角坐标)。
  • bordertype:已拷贝的原图像长方形的边界的类型:
  1. IPL_BORDER_CONSTANT:填充边界为固定值,值由函数最后一个参数指定。
  2. IPL_BORDER_REPLICATE:边界用上下行或者左右列来复制填充。

其他两种IPL边界类型IPL_BORDER_REFLECTIPL_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 );
}

在这里插入图片描述

Guess you like

Origin blog.csdn.net/fukangwei_lite/article/details/121760306