opencv_dart 2.1.0
opencv_dart: ^2.1.0 copied to clipboard
OpenCV4 bindings for Flutter, using dart:ffi.
opencv_dart #
OpenCV for Flutter.
Important
v1.4.5 is the last version of v1.x, for Flutter >= 3.38 (Dart >= 3.10), please use v2.x instead.
The minimum required dart sdk version is 3.10 (Flutter 3.38) that supports hooks (Native-Assets).
Note
WIP, contributions are welcome!
Example #

Supported Platforms #
| Platform | Supported | Tested | Prebuilt Binaries |
|---|---|---|---|
| Android | ✅ | ✅ | x86_64, arm64-v8a, armeabi-v7a |
| iOS | ✅ | ✅ | arm64, x64+arm64(Simulator) |
| Linux | ✅ | ✅ | x64 |
| Windows | ✅ | ✅ | x64 |
| macOS | ✅ | ✅ | x64, arm64 |
Status #
Core Modules #
| module | Binding status | Test status | description |
|---|---|---|---|
| core | ✅ | ✅ | Core module |
| calib3d | ✅ | ✅ | Calib3D module |
| dnn | ✅ | ✅ | DNN module |
| features2d | ✅ | ✅ | Features2D module |
| gapi | ❌ | ❌ | GAPI module |
| highgui | ✅ | ✅ | HighGUI module |
| imgcodecs | ✅ | ✅ | ImageCodecs module |
| imgproc | ✅ | ✅ | ImageProc module |
| ml | ❌ | ❌ | ML module |
| objdetect | ✅ | ✅ | Object Detection module |
| photo | ✅ | ✅ | Photo module |
| stitching | ☑️ | ☑️ | Stitching module |
| svd | ✅ | ✅ | SVD module |
| video | ✅ | ✅ | Video module |
| videoio | ✅ | ✅ | VideoIO module |
Contrib Modules #
| module | Binding status | Test status | description |
|---|---|---|---|
| aruco | ✅ | ✅ | ArUco module |
| img_hash | ✅ | ✅ | Image hashing module |
| cuda | ❌ | ❌ | |
| wechat_qrcode | ✅ | ✅ | |
| bgsegm | ❌ | ❌ | |
| superres | ❌ | ❌ | |
| xfeatures2d | ❌ | ❌ | |
| ximgproc | ✅ | ✅ | |
| xobjdetect | ✅ | ✅ | |
| xphoto | ❌ | ❌ | |
| quality | ✅ | ✅ | |
| freetype | ✅ | ✅ |
- ❌ : not finished
- ☑️ : partially supported
- ✅ : finished
- modules not in the above table are not considered, contributions are welcome
- VideoIO and HighGUI modules dynamically linked FFMPEG, you should be careful with the license, this project takes no responsibility for the license.
Usage #
Pure Dart
import 'package:dartcv4/dartcv.dart' as cv;
void main() {
final img = cv.imread("test/images/lenna.png", flags: cv.IMREAD_COLOR);
final gray = cv.cvtColor(img, gray, cv.COLOR_BGR2GRAY);
print("${img.rows}, ${img.cols}");
cv.imwrite("test_cvtcolor.png", gray);
}
Asynchronous
import 'package:dartcv4/dartcv.dart' as cv;
import 'dart:async';
void main() async {
final img = await cv.imreadAsync("test/images/lenna.png", flags: cv.IMREAD_COLOR);
final gray = await cv.cvtColorAsync(img, cv.COLOR_BGR2GRAY);
print("${img.rows}, ${img.cols}");
await cv.imwriteAsync("test_cvtcolor.png", gray);
}
Flutter
see example
More examples are on the way... see opencv_dart.examples and share yours
Configure hooks options
dartcv4 now supports hooks options, you can configure it in pubspec.yaml
hooks:
user_defines:
dartcv4:
# debug: true
include_modules: # `core` is always included
- imgcodecs
- imgproc
# ...
exclude_modules:
- contrib
- dnn
# ...
debug: enable debug mode, default isfalse, if enabled, all messages will be printed to stderr.- valid modules:
core: always included- included by default:
calib3dfeatures2dimgprocimgcodecsobjdetectphotostitching
- excluded by default:
contribdnnfreetypehighguivideovideoio
- Note: even a module is excluded, it's dart code is still available, but throws a symbol not found exception when called.
videoioandhighguiwill introduce FFMPEG dynamic libraries (except for ios, ffmpeg is not supported on ios for now).
TODO #
- ✅ compile libs for android, linux
- ✅ support for iOS, macOS
- ✅ add more examples
- ❌ documentation
- ✅ modify C wrapper to catch exceptions
- ✅ Native Assets
- ✅ async?
- ✅ more/full test coverage
- ✅ directly include opencv source code, refactor cmakelists.txt
Contributors #
|
rainy liu |
Abdelaziz Mahdy |
爱因斯唐 |
Gold87 |
JinWoo Jung |
westito |
|
Escaton615 |
mdeleau |
Thies Lennart Alff |
Matteo T. |
Acknowledgement #
gocvproject: https://github.com/hybridgroup/gocv License: Apache-2.0
Star History #
License #
Apache-2.0 License