diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index 29234b073d..6b86cd7e43 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -322,7 +322,10 @@ inline Mat Mat::diag(const Mat& d) CV_Assert( d.cols == 1 || d.rows == 1 ); int len = d.rows + d.cols - 1; Mat m(len, len, d.type(), Scalar(0)), md = m.diag(); - d.copyTo(md); + if( d.cols == 1 ) + d.copyTo(md); + else + transpose(d, md); return m; }