如何从BORDER_CONSTANT选项中获取值

时间:2015-07-24 08:00:33

标签: opencv

我需要使用BORDER_CONSTANT选项填充图像,并且还需要一个标量值,您可以在其中指定填充值的值,我想知道值的序列是什么,例如:它是(顶部,右侧,底部,左侧)还是其他一些序列。

1 个答案:

答案 0 :(得分:1)

我假设您正在使用copyMakeBorder

  

C ++:void copyMakeBorder(InputArray src,OutputArray dst,int top,int bottom,int left,int right,int borderType,const Scalar& value = Scalar())

     

Python:cv2.copyMakeBorder(src,top,bottom,left,right,borderType [,dst [,value]])→dst

中指定填充的颜色(使用BORDER_CONSTANT时),它在顶部,底部,左侧和右侧都是相同的。

  

value - borderType == BORDER_CONSTANT时的边框值。

Mat3b img; // Your original image
...
Mat3b padded1;
copyMakeBorder(img, padded1, 10,    10,  10,   10, BORDER_CONSTANT, Scalar(0,255,0));
//                           ^^^ ^^^^^^ ^^^^ ^^^^^
//                           top bottom left right

// Now padded1 has a green border of 10 pixels around the original image.

如果你真的想为顶部,底部等设置不同的填充颜色,你可以这样做:

Mat3b img; // Your original image
...

Mat3b padded2;
copyMakeBorder(img    , padded2, 10, 0, 0, 0, BORDER_CONSTANT, Scalar(255,0,0));
copyMakeBorder(padded2, padded2, 0, 10, 0, 0, BORDER_CONSTANT, Scalar(0,255,0));
copyMakeBorder(padded2, padded2, 0, 0, 10, 0, BORDER_CONSTANT, Scalar(0,0,255));
copyMakeBorder(padded2, padded2, 0, 0, 0, 10, BORDER_CONSTANT, Scalar(255,0,255));

// Now padded2 has different padding color in each side.

<强>更新

通常您只想为CV_8UC1图像创建一些填充。简单地说:

Mat3b img; // Your original image
...

Mat1b gray;
cvtColor(img, gray, COLOR_BGR2GRAY);

// Add a black padding (of 10 pixels) around the image
Mat1b padded3;
copyMakeBorder(gray, padded3, 10, 10, 10, 10, BORDER_CONSTANT, Scalar(0));