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:
@@ -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]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user