使用OpenCV提供的函数copyMakeBorder()来拓展边界,其原型如下
void copyMakeBorder( InputArray src, OutputArray dst,
int top, int bottom, int left, int right, int borderType,
const Scalar& value = Scalar())
src:输入的数组。
dst:输出的拓展边界后的数组。
top:在src上边界向上拓展的行数。
bottom:在src下边界向下拓展的行数。
left:在src的左边界向左拓展的列数。
right:在src的右边界向右拓展的列数。
borderType:上一节中的边界拓展策略中的一个。
value:当你的边界策略使用的是BORDER_CONSTANT的时候,此处是指边界处填写的常数值。(
*BORDER_REPLICATE: aaaaaa | abcdefgh | hhhhhhh
* BORDER_REFLECT : fedcba | abcdefgh | hgfedcb
* BORDER_REFLECT_101 : gfedcb | abcdefgh | gfedcba
* BORDER_WRAP : cdefgh | abcdefgh | abcdefg
* BORDER_CONSTANT : iiiiii | abcdefgh | iiiiiii with some specified ’i’
)
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char**argv){
Mat orgIm = imread("theImage.png");
int extRows = 19;
int extCols = 15;
Mat extendedIm;
copyMakeBorder( orgIm, extendedIm, extRows, extRows, extCols, extCols, BORDER_REFLECT_101);
imshow("original image", orgIm);
imshow("extended image", extendedIm);
waitKey();
return 0;
}