Skip to content

Commit 24c3159

Browse files
committed
add asyncarray
1 parent 11f41bd commit 24c3159

File tree

6 files changed

+50
-2
lines changed

6 files changed

+50
-2
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.4.1
2+
3+
* add `asyncarray`
4+
15
## 0.4.0
26

37
* :rocket: add support for `photo` module

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ prebuilt binaries.
3333
| svd | :white_check_mark: | :white_check_mark: | SVD module |
3434
| video | :white_check_mark: | :white_check_mark: | Video module |
3535
| videoio | :white_check_mark: | :white_check_mark: | VideoIO module |
36-
| asyncarray | :x: | :x: | AsyncArray module |
36+
| asyncarray | :white_check_mark: | :white_check_mark: | AsyncArray module |
3737
| calib3d | :x: | :x: | Calib3D module |
3838
| dnn | :x: | :x: | DNN module |
3939
| photo | :white_check_mark: | :white_check_mark: | Photo module |

lib/src/core/asyncarray.dart

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
library cv;
2+
3+
import 'dart:ffi' as ffi;
4+
5+
import 'package:ffi/ffi.dart';
6+
import 'package:opencv_dart/src/core/cv_exception.dart';
7+
8+
import '../core/mat_type.dart';
9+
import '../core/point.dart';
10+
import '../core/base.dart';
11+
import '../core/mat.dart';
12+
import '../opencv.g.dart' as cvg;
13+
14+
final _bindings = cvg.CvNative(loadNativeLibrary());
15+
16+
class AsyncArray implements ffi.Finalizable {
17+
AsyncArray._(this.ptr) {
18+
finalizer.attach(this, ptr);
19+
}
20+
21+
factory AsyncArray.empty() {
22+
final _ptr = _bindings.AsyncArray_New();
23+
return AsyncArray._(_ptr);
24+
}
25+
26+
cvg.AsyncArray ptr;
27+
static final finalizer = ffi.NativeFinalizer(_bindings.addresses.AsyncArray_Close);
28+
29+
Mat get() {
30+
return using<Mat>((arena) {
31+
final dst = Mat.empty();
32+
final result = _bindings.AsyncArray_GetAsync(ptr, dst.ptr);
33+
final dartStr = result.cast<Utf8>().toDartString();
34+
if (dartStr.length > 0) throw OpenCvDartException("$dartStr");
35+
return dst;
36+
});
37+
}
38+
}

lib/src/opencv.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export 'constants.g.dart';
55
export 'aruco/aruco.dart';
66
export 'aruco/aruco_dict.dart';
77

8+
export 'core/asyncarray.dart';
89
export 'core/base.dart';
910
export 'core/core.dart';
1011
export 'core/contours.dart';

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: opencv_dart
22
description: "OpenCV4 bindings for Dart language and Flutter, using dart:ffi. The most complete OpenCV bindings for Dart!"
3-
version: 0.4.0
3+
version: 0.4.1
44
homepage: https://github.com/rainyl/opencv_dart
55

66
environment:

test/core_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ void main() async {
88
expect(version.length, greaterThan(0));
99
});
1010

11+
test('cv.AsyncArray', () {
12+
final arr = cv.AsyncArray.empty();
13+
expect(arr.ptr, isNotNull);
14+
});
15+
1116
test('cv.absDiff', () {
1217
final mat0 = cv.Mat.ones(100, 100, cv.MatType.CV_8UC3);
1318
final mat1 = cv.Mat.zeros(100, 100, cv.MatType.CV_8UC3);

0 commit comments

Comments
 (0)