[OpenCV]拓展图像边界对图像进行处理时,提取在边界的某些目标时会出现访问越界的错误,一般这种情况有两种解决方案:1.只对不越界的像素进行访问,见数据增强之图像旋转及坐标对应(附代码);2.对图像的边界进行扩展,这里对opencv中提供的图像边界扩展函数进行介绍。
- 边界的拓展方式
1 //将边界最相近的像素进复制扩展 2 * BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh 3 //将边界像素进行镜像 4 * BORDER_REFLECT: fedcba|abcdefgh|hgfedcb 5 //将边界像素进行镜像 6 * BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba 7 //将边界翻转 8 * BORDER_WRAP: cdefgh|abcdefgh|abcdefg 9 //将边界自由赋值 10 * BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii with some specified ’i’
以上内容取自OpenCV的帮助文档。其中 “|” 表示的是图像的边界,两个“|”中间是图像的内容,最后一个边界拓展策略还要额外给定一个i值,用于对边界进行赋值。
上述图像依次是对应的扩展参数进行图像边界扩展结果,其中左上角是原图。
- 函数原型及参数说明
void copyMakeBorder( InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=https://www.it610.com/article/Scalar() )
【图像边界扩展】src:输入的数组。
dst:输出的拓展边界后的数组。
top:在src上边界向上拓展的行数。
bottom:在src下边界向下拓展的行数。
left:在src的左边界向左拓展的列数。
right:在src的右边界向右拓展的列数。
borderType:上一节中的边界拓展策略中的一个。
value:当你的边界策略使用的是BORDER_CONSTANT的时候,此处是指边界处填写的常数值。
转载于:https://www.cnblogs.com/qinguoyi/p/8359363.html