diff --git a/src/mat.cpp b/src/mat.cpp index eaeb8c5b1..b430f8a07 100644 --- a/src/mat.cpp +++ b/src/mat.cpp @@ -48,7 +48,17 @@ Mat Mat::clone(Allocator* _allocator) const if (total() > 0) { - memcpy(m.data, data, total() * elemsize); + if (cstep == m.cstep) + memcpy(m.data, data, total() * elemsize); + else + { + // copy by channel for differnet cstep + size_t size = w * h; + for (int i = 0; i < c; i++) + { + memcpy(m.channel(i), channel(i), size * elemsize); + } + } } return m;