dartcv
OpenCV Bindings for Dart Language.
Important
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 | :white_check_mark: | :white_check_mark: | x86_64, arm64-v8a, armeabi-v7a |
| iOS | :white_check_mark: | :white_check_mark: | arm64, x64+arm64(Simulator) |
| Linux | :white_check_mark: | :white_check_mark: | x64 |
| Windows | :white_check_mark: | :white_check_mark: | x64 |
| macOS | :white_check_mark: | :white_check_mark: | x64, arm64 |
Status
Core Modules
| module | Binding status | Test status | description |
|---|---|---|---|
| core | :white_check_mark: | :white_check_mark: | Core module |
| calib3d | :white_check_mark: | :white_check_mark: | Calib3D module |
| dnn | :white_check_mark: | :white_check_mark: | DNN module |
| features2d | :white_check_mark: | :white_check_mark: | Features2D module |
| gapi | :x: | :x: | GAPI module |
| highgui | :white_check_mark: | :white_check_mark: | HighGUI module |
| imgcodecs | :white_check_mark: | :white_check_mark: | ImageCodecs module |
| imgproc | :white_check_mark: | :white_check_mark: | ImageProc module |
| ml | :x: | :x: | ML module |
| objdetect | :white_check_mark: | :white_check_mark: | Object Detection module |
| photo | :white_check_mark: | :white_check_mark: | Photo module |
| stitching | :ballot_box_with_check: | :ballot_box_with_check: | Stitching module |
| svd | :white_check_mark: | :white_check_mark: | SVD module |
| video | :white_check_mark: | :white_check_mark: | Video module |
| videoio | :white_check_mark: | :white_check_mark: | VideoIO module |
Contrib Modules
| module | Binding status | Test status | description |
|---|---|---|---|
| aruco | :white_check_mark: | :white_check_mark: | ArUco module |
| img_hash | :white_check_mark: | :white_check_mark: | Image hashing module |
| cuda | :x: | :x: | |
| wechat_qrcode | :white_check_mark: | :white_check_mark: | |
| bgsegm | :x: | :x: | |
| superres | :x: | :x: | |
| xfeatures2d | :x: | :x: | |
| ximgproc | :white_check_mark: | :white_check_mark: | |
| xobjdetect | :white_check_mark: | :white_check_mark: | |
| xphoto | :x: | :x: | |
| quality | :white_check_mark: | :white_check_mark: | |
| freetype | :white_check_mark: | :white_check_mark: |
- :x: : not finished
- :ballot_box_with_check: : partially supported
- :white_check_mark: : 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:
imgprocimgcodecs
- excluded by default:
calib3dfeatures2dflanndnnfreetypehighguivideovideoioobjdetectphotostitchingarucoimg_hashqualitywechat_qrcodeximgprocxobjdetect
- Note: even a module is excluded, it's dart code is still available, but throws a symbol not found exception when called.
FFMPEG is no longer availabel withvideoioandhighguiwill introduce FFMPEG dynamic libraries (except for ios, ffmpeg is not supported on ios for now).dartcv >= 2.2.0
TODO
xcompile libs for android, linuxxsupport for iOS, macOSxadd more examplesdocumentationxmodify C wrapper to catch exceptionsxNative Assetsxasync?xmore/full test coveragexdirectly 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: github.com/hybridgroup/gocv License: Apache-2.0
Star History
License
Apache-2.0 License