mirror of
https://github.com/opencv/opencv.git
synced 2025-08-05 22:19:14 +08:00
core: fix cv::Mat constructor
This commit is contained in:
parent
2dff9f4c6d
commit
4378e8fcc0
@ -577,11 +577,9 @@ Mat::Mat(const std::vector<_Tp>& vec, bool copyData)
|
||||
#ifdef CV_CXX11
|
||||
template<typename _Tp, typename> inline
|
||||
Mat::Mat(const std::initializer_list<_Tp> list)
|
||||
: flags(MAGIC_VAL | traits::Type<_Tp>::value | CV_MAT_CONT_FLAG), dims(2), rows((int)list.size()),
|
||||
cols(1), data(0), datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows), step(0)
|
||||
: Mat()
|
||||
{
|
||||
if(list.size() == 0)
|
||||
return;
|
||||
CV_Assert(list.size() != 0);
|
||||
Mat((int)list.size(), 1, traits::Type<_Tp>::value, (uchar*)list.begin()).copyTo(*this);
|
||||
}
|
||||
|
||||
@ -590,11 +588,11 @@ Mat::Mat(const std::initializer_list<int> sizes, const std::initializer_list<_Tp
|
||||
: Mat()
|
||||
{
|
||||
size_t size_total = 1;
|
||||
int *sz = (int*)sizes.begin();
|
||||
for(auto s : sizes)
|
||||
size_total *= s;
|
||||
CV_Assert(list.size() != 0 || size_total == list.size());
|
||||
Mat((int)sizes.size(), sz, traits::Type<_Tp>::value, (uchar*)list.begin()).copyTo(*this);
|
||||
CV_Assert(list.size() != 0);
|
||||
CV_Assert(size_total == list.size());
|
||||
Mat((int)sizes.size(), (int*)sizes.begin(), traits::Type<_Tp>::value, (uchar*)list.begin()).copyTo(*this);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1724,6 +1724,10 @@ TEST(Mat, from_initializer_list)
|
||||
ASSERT_DOUBLE_EQ(cvtest::norm(A, B, NORM_INF), 0.);
|
||||
ASSERT_DOUBLE_EQ(cvtest::norm(A, C, NORM_INF), 0.);
|
||||
ASSERT_DOUBLE_EQ(cvtest::norm(B, C, NORM_INF), 0.);
|
||||
|
||||
auto D = Mat_<double>({2, 3}, {1, 2, 3, 4, 5, 6});
|
||||
EXPECT_EQ(2, D.rows);
|
||||
EXPECT_EQ(3, D.cols);
|
||||
}
|
||||
|
||||
TEST(Mat_, from_initializer_list)
|
||||
|
Loading…
Reference in New Issue
Block a user