Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pad array with zeros- openCV

Tags:

c++

opencv

How to pad an array(cv::Mat) with zeros in OpenCV?

like image 887
A S Avatar asked Jul 31 '12 10:07

A S


2 Answers

An another way to pad an image is to use copyMakeBorder function:

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

Then padding with zeros is simply like that

Mat image,image_pad;
copyMakeBorder(image,image_pad,1,1,1,1,BORDER_CONSTANT,Scalar(0));

Finally, here is the tutorial of Adding borders to your images.

like image 80
qun Avatar answered Nov 11 '22 00:11

qun


Here is a way to do it

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)));
like image 45
Sam Avatar answered Nov 11 '22 00:11

Sam