opencv_dart 0.6.1
opencv_dart: ^0.6.1 copied to clipboard
OpenCV4 bindings for Dart language and Flutter, using dart:ffi. The most complete OpenCV bindings for Dart!
opencv_dart #
OpenCV Bindings for Dart Language.
!!!This package is experiment and APIs may change in the future!!!
WIP, contributions are welcome!
| Platform | Supported | Tested | Prebuilt Binaries |
|---|---|---|---|
| Android | ✅ | ☑️ | x86_64, arm64-v8a, armeabi-v7a |
| iOS | ❌ | ❌ | ❌ |
| Linux | ✅ | ✅ | x64 |
| Windows | ✅ | ✅ | x64 |
| macOS | ❌ | ❌ | ❌ |
- I have no Apple devices, so iOS and macOS are not supported yet, theorically the dart codes will work, you can compile binaries by yourself, contributions are welcome!
Prebuilt binaries for Android(arm64-v8a, armeabi-v7a, x86_64), Linux(x64) and Windows(x64) are available,for other platforms, you have to build them your self.
IMPORTANT #
After added to pubspec.yaml or install by commandline,
please run dart run opencv_dart:setup -p <platform> -a <arch> to download
prebuilt binaries.
platform:autoandroidlinuxwindowsarch:autox86x64x86_64(android only)arm64-v8a(android only)armeabi-v7a(android only)
Please use v0.3.0 and later version.
Status #
| module | Binding status | Test status | description |
|---|---|---|---|
| aruco | ✅ | ✅ | ArUco module |
| core | ✅ | ✅ | Core module |
| features2d | ✅ | ✅ | Features2D module |
| highgui | ✅ | ✅ | HighGUI module |
| imgcodecs | ✅ | ✅ | ImageCodecs module |
| imgproc | ✅ | ✅ | ImageProc module |
| objdetect | ✅ | ✅ | Object Detection module |
| svd | ✅ | ✅ | SVD module |
| video | ✅ | ✅ | Video module |
| videoio | ✅ | ✅ | VideoIO module |
| asyncarray | ✅ | ✅ | AsyncArray module |
| calib3d | ✅ | ✅ | Calib3D module |
| dnn | ✅ | ✅ | DNN module |
| photo | ✅ | ✅ | Photo module |
| stitching | ☑️ | ☑️ | Stitching module |
| cuda | ❌ | ❌ | CUDA module |
| contrib | ❌ | ❌ | Contrib module |
- ❌ : not finished
- ☑️ : partially supported
- ✅ : finished
videoio:supported now.cv.VideoCapturefrom file is not supported yet
Usage #
import 'package:opencv_dart/opencv_dart.dart' as cv;
void main() {
final img = cv.imread("test/images/lenna.png", flags: cv.IMREAD_COLOR);
final gray = cv.Mat.empty();
cv.cvtColor(img, gray, cv.COLOR_BGR2GRAY);
print("${img.rows}, ${img.cols}");
cv.imwrite("test_cvtcolor.png", gray);
}
More examples are on the way...
TODO #
- ✅
compile libs for android, linux - ❌ support for iOS, macOS
- ❌ add more examples
- ❌ documentation
- ❌ modify C wrapper to catch exceptions
- ❌ Native Assets
- ❌ async?
For Developers #
This package is in heavy development, dynamic libraries for Windows and linux have been compiled, for other platforms, you need to compile it yourself.
How to compile #
-
prepare a compiler.
windows: Install Visual Studio 2019 or Later
ubuntu: reference opencv official build guide to install
-
install dependencies:
cmake,python, add to PATH -
clone this repo,
git clone --recursive https://github.com/rainyl/opencv_dart.git -
cd opencv_dart -
compile opencv
for windows:
python .\scripts\build.py --opencv --os linux --arch x64 --build-dir build --src srcfor linux:
python ./scripts/build.py --opencv --os linux --arch x64 --build-dir build --src srcfor android, you need to download android ndk and opencv for android sdk, extract opencv sdk and copy and rename
OpenCV-android-sdktobuild/opencv/androiddirectory. -
compile this package along with gocv.
windows:
python ./scripts/build.py --dart --os windows --arch x64 --build-dir build --src srclinux:
python ./scripts/build.py --dart --os linux --arch x64 --build-dir build --src srcAndroid:
python ./scripts/build.py --dart --os android --arch x64 --build-dir build --src src --android-ndk <Android NDK path> --android-abi <x86_64, arm64-v8a, armeabi-v7a> -
If you want to test using vscode, add dynamic library path to
"dart.env"insettings.json
Acknowledgement #
gocvproject: https://github.com/hybridgroup/gocv License: Apache-2.0
License #
Apache-2.0 License