OpenCV边界外推和边界处理

OpenCV边界外推和边界处理,第1张

卷积 *** 作,滤波处理在边界时缺少相邻像素点计算出一个有效的结果,因此可以通过创建一个边框函数来给源图像周围添加虚拟像素

自定义一个边框

void copyMakeBorder(
Inputarray src,
OutputArray dst,
int top,
int bottom,
int left,
int right,
int borderType,
const Scalar& value=Scalar()
);

第一个参数是原图像数组

第二个参数是输出图像

第三,四,五,六参数,表示上下左右四个方向的尺寸,新的图像size为Size(src.cols+left+right,src.rows+top+bottom)

第七个参数表示像素填充方式

第八个参数这个参数在参数六使用常量填充时有效

enum
{
BORDER_CONSTANT,    //使用常量扩展边界
BORDER_WRAP,        //复制对边像素扩展边界
BORDER_REPLICATE,   //复制边缘像素扩展边界
BORDER_REFLECT,     //通过镜像复制扩展边界
BORDER_REFLECT_101, //通过镜像复制扩展边界边界像素除外
BORDER_DEFAULT      //BORDER_REFLECT_101的别名
};

这是使用不同参数七时的效果图

自定义外推每扩展一个边界像素,都需要计算出对应的原图中的位置,这个功能被提炼出来,就是borderInterpolate,这个函数一般用于OpenCV内部

int borderInterpolate
(
int p,              //相对原图的像素点位置
int len,
int borderType
)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/719363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存