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 | :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:
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
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
Libraries
- opencv
- OpenCV bindings for Flutter
- opencv_dart
- OpenCV bindings for Flutter