diff --git a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp index 0168610572..3084a5354b 100644 --- a/modules/core/src/lapack.cpp +++ b/modules/core/src/lapack.cpp @@ -1560,18 +1560,18 @@ static void _SVDcompute( InputArray _aarr, OutputArray _w, JacobiSVD(temp_a.ptr(), temp_u.step, temp_w.ptr(), temp_v.ptr(), temp_v.step, m, n, compute_uv ? urows : 0); } - temp_w.copyTo(_w); + if(_w.needed()) temp_w.copyTo(_w); if( compute_uv ) { if( !at ) { - transpose(temp_u, _u); - temp_v.copyTo(_vt); + if(_u.needed()) transpose(temp_u, _u); + if(_vt.needed()) temp_v.copyTo(_vt); } else { - transpose(temp_v, _u); - temp_u.copyTo(_vt); + if(_u.needed()) transpose(temp_v, _u); + if(_vt.needed()) temp_u.copyTo(_vt); } } }