, 2D . 3D Mat, . (), copyTo, .
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
int main()
{
int old_size[3];
old_size[0] = 5;
old_size[1] = 5;
old_size[2] = 2;
int pad_size[3];
pad_size[0] = old_size[0] + 2 * 1;
pad_size[1] = old_size[1] + 2 * 2;
pad_size[2] = old_size[2];
cv::Mat small_image(3, old_size, CV_32FC1, cv::Scalar(1));
cv::Mat image_padded(3, pad_size, CV_32FC1, cv::Scalar(0));
cv::Range ranges[3];
ranges[0] = cv::Range(1, old_size[0]+1);
ranges[1] = cv::Range(2, old_size[1]+2);
ranges[2] = cv::Range(0, old_size[2]);
small_image.copyTo(image_padded(ranges));
for (int i = 0; i < pad_size[0]; i++)
for (int j = 0; j < pad_size[1]; j++)
for (int k = 0; k < pad_size[2]; k++)
std::cout << image_padded.at<float>(i, j, k) << ", ";
}
:
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0