1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-29 15:23:05 +04:00

Added N-dim submat selection with vectors

Currently, to select a submatrix of a N-dimensional matrix, it requires
two lines of code while only one line of code is required if using a 2D
array.

I added functionality to be able to select an N-dim submatrix using a
vector list instead of a Range pointer. This allows initializer lists to
be used for a one-line selection.
This commit is contained in:
Addison Elliott
2016-12-15 09:16:40 -06:00
parent c038d1be60
commit eb04b2bfa9
5 changed files with 118 additions and 0 deletions
+25
View File
@@ -1546,3 +1546,28 @@ TEST(Mat, regression_5917_clone_empty)
ASSERT_NO_THROW(cloned = source.clone());
}
TEST(Mat, regression_7873_mat_vector_initialize)
{
std::vector<int> dims;
dims.push_back(12);
dims.push_back(3);
dims.push_back(2);
Mat multi_mat(dims, CV_32FC1, cv::Scalar(0));
ASSERT_EQ(3, multi_mat.dims);
ASSERT_EQ(12, multi_mat.size[0]);
ASSERT_EQ(3, multi_mat.size[1]);
ASSERT_EQ(2, multi_mat.size[2]);
std::vector<Range> ranges;
ranges.push_back(Range(1, 2));
ranges.push_back(Range::all());
ranges.push_back(Range::all());
Mat sub_mat = multi_mat(ranges);
ASSERT_EQ(3, sub_mat.dims);
ASSERT_EQ(1, sub_mat.size[0]);
ASSERT_EQ(3, sub_mat.size[1]);
ASSERT_EQ(2, sub_mat.size[2]);
}