diff --git a/src/Matrix.cc b/src/Matrix.cc index 45f0236..7e8e5e8 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -320,7 +320,13 @@ NAN_METHOD(Matrix::GetData) { int size = self->mat.rows * self->mat.cols * self->mat.elemSize1(); Local buf = Nan::NewBuffer(size).ToLocalChecked(); uchar* data = (uchar*) Buffer::Data(buf); - memcpy(data, self->mat.data, size); + // if there is padding after each row, clone first to get rid of it + if (self->mat.dims == 2 && self->mat.step[0] != self->mat.size[1]) { + cv::Mat copy = self->mat.clone(); + memcpy(data, copy.data, size); + } else { + memcpy(data, self->mat.data, size); + } v8::Local globalObj = Nan::GetCurrentContext()->Global(); v8::Local bufferConstructor = v8::Local::Cast(globalObj->Get(Nan::New("Buffer").ToLocalChecked()));