borderInterpolate()函数

官网:borderInterpolate

borderInterpolate

函数原型

int borderInterpolate( int p, int len, int borderType );

源码在filter.cpp中

功能

根据不同的外插方法(borderType),如  BORDER_REPLICATE,计算外插像素对应于原图中的1D坐标,一般不单独使用,而在其他函数内部使用,如在copyMakeBorder中使用

其中

p:扩充边缘的像素的坐标(横坐标或者纵坐标)

len:src对于p所在的维的大小

borderType:扩充边缘的类型,就是外插的类型,OpenCV中给出以下几种方式

  * BORDER_REPLICATE
  * BORDER_REFLECT
  * BORDER_REFLECT_101
  * BORDER_WRAP
  * BORDER_CONSTANT

 

/******************************************************************************************************************
文件说明:
         copyMakeBorder函数详解

函数功能:
         1)这个函数经原图像复制到目标图像的中间。复制的原始图像的左边,右边,上边和下边的区域将使用像
		   素向外填充扩展。这个函数可以简化图像边界的处理
		 2)这个函数把源图像拷贝到目的图像的中央,四面填充指定的像素。
		 3)vCopyMakeBorder()函数可以复制图像并制作边界,将特定图像轻微变大,然后以各种方式自动填充图
		   像边界,当 Bordertype=IPL_BORDER_REPLICATE时,原始图像边缘的行和列被复制到大图像的边缘,当 
		   Bordertype=IPL_BORDER_CONSTANT时,有一个像素宽的黑色边界。
函数原型:
         void copyMakeBorder(InputArray  src,        //【1】输入图像
		                     OutputArray dst,        //【2】输出图像
							 int top,                //【3】表示对边界每个方向添加的像素个数,就是
							 int bottom,             //     边框的粗细程度
							 int left,               //【4】边界的方向包括上下左右
							 int right, 
							 int borderType,         //【5】表示边界的类型
							                         //【6】表示如果边界的类型是 BORDER_CONSTANT,那么边界的颜色值
							 const Scalar& value=Scalar())
边界的类型有以下几种:
                 1)BORDER_REPLICATE:重复,就是对边界的像素进行复制
		 2)BORDER_REFLECT:反射,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb反射
		 3)BORDER_REFLECT_101:反射101:例子:gfedcb|abcdefgh|gfedcba
		 4)BORDER_WRAP:外包装:cdefgh|abcdefgh|abcdefg
		 5)BORDER_CONSTANT:常量复制:例子:iiiiii|abcdefgh|iiiiiii
********************************************************************************************************************/

  

 

 

 

 

 

 

 

 

参考:在OpenCV中图像边界扩展 copyMakeBorder 的实现

 

posted @ 2019-08-10 16:13  浮沉沉浮  阅读(724)  评论(0编辑  收藏  举报