卷积 *** 作,滤波处理在边界时缺少相邻像素点计算出一个有效的结果,因此可以通过创建一个边框函数来给源图像周围添加虚拟像素
自定义一个边框
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
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)