边界扩充方法函数(cvCopyMakeBorder)

void cvCopyMakeBorder( const CvArr* src, CvArr* dst, CvPoint offset, int bordertype, CvScalar value=cvScalarAll(0) );

src
输入图像。
dst
输出图像。
offset
输入图像(或者其ROI)欲拷贝到的输出图像长方形的左上角坐标(或者左下角坐标,如果以左下角为原点)。长方形的尺寸要和原图像的尺寸的ROI分之一匹配。
bordertype
已拷贝的原图像长方形的边界的类型:
IPL_BORDER_CONSTANT - 填充边界为固定值,值由函数最后一个参数指定。IPL_BORDER_REPLICATE -边界用上下行或者左右列来复制填充。(其他两种IPL边界类型, IPL_BORDER_REFLECT 和IPL_BORDER_WRAP现已不支持)。
value
如果边界类型为IPL_BORDER_CONSTANT的话,那么此为边界像素的值。

函数 cvCopyMakeBorder拷贝输入2维阵列到输出阵列的内部并且在拷贝区域的周围制作一个指定类型的边界。函数可以用来模拟和嵌入在指定算法实现 中的边界不同的类型。例如:和opencv中大多数其他滤波函数一样,一些形态学函数内部使用复制边界类型,但是用户可能需要零边界或者填充为1或255 的边界。

#include 
   
   
    
    
#include 
    
    
     
     
#include 
     
     
      
      
#include 
      
      
       
       


using namespace cv;


int main()
{
	IplImage *img = cvLoadImage("lena.jpg");
	//IplImage *dst = cvCreateImage(cvSize(img->width*2,img->height*2),img->depth,img->nChannels);
	//IplImage *dst = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
	IplImage *dst = cvCreateImage(cvSize(img->width+10,img->height+10),img->depth,img->nChannels);
	float a[9] = {1.0/9,1.0/9,1.0/9,1.0/9,1.0/9,1.0/9,1.0/9,1.0/9,1.0/9};
	CvMat kernel = cvMat(3,3,CV_32FC1,a);
	cvCopyMakeBorder(img,dst,cvPoint(5,5),IPL_BORDER_CONSTANT);
	
	cvNamedWindow("lena");
	cvShowImage("lena",dst);
	cvWaitKey(0);
	cvReleaseImage(&img);
	cvReleaseImage(&dst);
	cvDestroyWindow("lena");

}

      
      
     
     
    
    
   
   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值