diff --git a/lib/src/core/mat.dart b/lib/src/core/mat.dart index a2061963..050adc2f 100644 --- a/lib/src/core/mat.dart +++ b/lib/src/core/mat.dart @@ -289,17 +289,13 @@ class Mat extends CvStruct { return p.value; }); - /// ([rows], [cols]) - List get size => [rows, cols]; - - // List get shape { - // return cvRunArena>((arena) { - // final s = arena(); - // cvRun(() => cffiCore.Mat_Size(ref, s)); - // final vec = VecI32.fromPointer(s.value); - // return vec.toList(); - // }); - // } + /// Mat.size + VecI32 get size { + final p = calloc(); + cvRun(() => ccore.Mat_Size(ref, p)); + final vec = VecI32.fromPointer(p); + return vec; + } /// ([rows], [cols], [channels]) List get shape => [rows, cols, channels]; diff --git a/src/core/core.cpp b/src/core/core.cpp index 696bdefc..10da8031 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -350,7 +350,7 @@ CvStatus *Mat_Size(Mat m, VecI32 *rval) { BEGIN_WRAP auto size = m.ptr->size; int *ptr = new int[size.dims()]; - memcpy(ptr, size.p, size.dims()); + memcpy(ptr, size.p, size.dims() * sizeof(int)); *rval = {ptr, static_cast(size.dims())}; END_WRAP } diff --git a/test/imgcodecs_test.dart b/test/imgcodecs_test.dart index d7c99847..ab578a2e 100644 --- a/test/imgcodecs_test.dart +++ b/test/imgcodecs_test.dart @@ -27,10 +27,12 @@ void main() async { final cvImage = cv.imread("test/images/circles.jpg", flags: cv.IMREAD_COLOR); expect((cvImage.width, cvImage.height), (512, 512)); final (success, buf) = cv.imencode(".png", cvImage); + expect(success, true); expect(buf.length, greaterThan(0)); await File("test/images_out/test_imencode.png").writeAsBytes(buf); final params = [cv.IMWRITE_PNG_COMPRESSION, 9].i32; final (success1, buf1) = cv.imencode(".png", cvImage, params: params); + expect(success1, true); expect(buf1.length, greaterThan(0)); final cvimgDecode = cv.imdecode(buf, cv.IMREAD_COLOR);