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