原理
在卷积的过程中,图片边缘的处理总是一个问题。因为卷积核的锚点无法覆盖图片的边缘像素,硬要覆盖的话,卷积核就会有一部分超出图片的范围。
OpenCV中的大部分方法都会将图片的边缘像素进行扩充,从而扩大原有的图片。这样卷积核就能覆盖原来的边缘像素了。
本文将介绍两种对图片边缘像素进行扩充的方法:
- BORDER_CONSTANT:用一个常量(比如表示黑色的0)对图片边缘进行扩充
- BORDER_REPLICATE:图片的边缘像素被复制,从而形成图片的边框
API
以上两种边缘扩充的方法都可以用copyMakeBorder()
函数来实现,其函数原型如下:
void cv::copyMakeBorder(InputArray src, //输入图片
OutputArray dst, //输出图片
int top, //上边框宽度
int bottom, //下边框宽度
int left, //左边框宽度
int right, //有边框宽度
int borderType, //边框扩充类型
const Scalar& value = Scalar