使用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;
- }