diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index 4bd1bb7a6..f2f14fe0e 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -319,8 +319,8 @@ inline Mat Mat::colRange(const Range& r) const inline Mat Mat::diag(const Mat& d) { - CV_Assert( d.cols == 1 ); - Mat m(d.rows, d.rows, d.type(), Scalar(0)), md = m.diag(); + CV_Assert( d.cols == 1 || d.rows == 1 ); + Mat m(d.total(), d.total(), d.type(), Scalar(0)), md = m.diag(); d.copyTo(md); return m; }