如何用OpenCV中的零填充数组(cv::Mat
)?用零填充阵列openCV
11
A
回答
12
这里是一个办法做到这一点
cv::Mat img(100, 100, CV_8UC3);
cv::Mat padded;
int padding = 3;
padded.create(img.rows + 2*padding, img.cols + 2*padding, img.type());
padded.setTo(cv::Scalar::all(0));
img.copyTo(padded(Rect(padding, padding, img.cols, img.rows)));
22
的另一种方式来垫的图像是使用copyMakeBorder功能:
C++: void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=Scalar())
然后用0填充简直就像
Mat image,image_pad;
copyMakeBorder(image,image_pad,1,1,1,1,BORDER_CONSTANT,Scalar(0));
最后,这里是Adding borders to your images的教程。
你在这种情况下填充什么意思? – juanchopanza 2012-07-31 10:15:23
@juanchopanza我的意思是用原始数组周围的零来创建一个更大的数组。 – 2012-07-31 10:18:51
难道你不能让一个数组充满零,然后用小数组中的数据填充相关块吗? – juanchopanza 2012-07-31 10:21:34