dartcv4 2.1.0+1 copy "dartcv4: ^2.1.0+1" to clipboard
dartcv4: ^2.1.0+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.

Star on Github License: Apache-2.0
Native Assets Build Discord Server

Important

The minimum required dart sdk version is 3.10 (Flutter 3.38) that supports hooks (Native-Assets).

Usage:

for pure dart:

  1. dart pub add dartcv4
  2. dart run <path-to-your-code>

for flutter:

  1. flutter pub add dartcv4
  2. flutter config --enable-native-assets
  3. flutter run

Note

WIP, contributions are welcome!

Example #

example

Supported Platforms #

Platform Supported Tested Prebuilt Binaries
Android x86_64, arm64-v8a, armeabi-v7a
iOS arm64, x64(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 is false, if enabled, all messages will be printed to stderr.
  • valid modules:
    • core: always included
    • included by default:
      • calib3d
      • features2d
      • imgproc
      • imgcodecs
      • objdetect
      • photo
      • stitching
    • excluded by default:
      • contrib
      • dnn
      • freetype
      • highgui
      • video
      • videoio
  • Note: even a module is excluded, it's dart code is still available, but throws a symbol not found exception when called.
  • videoio and highgui will 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 #

rainyl
rainy liu
abdelaziz-mahdy
Abdelaziz Mahdy
einsitang
爱因斯唐
Gold872
Gold87
Jiinwoo
JinWoo Jung
westito
westito
Escaton615
Escaton615
mdeleau
mdeleau
lennartalff
Thies Lennart Alff
totemat
Matteo T.

Acknowledgement #

Star History #

Star History Chart

License #

Apache-2.0 License

7
likes
150
points
5.05k
downloads

Publisher

verified publisherrainyl.dev

Weekly Downloads

OpenCV4 bindings for Dart language and Flutter, using dart:ffi. The most complete OpenCV bindings for Dart!

Repository (GitHub)
View/report issues
Contributing

Topics

#opencv #image #ffi #flutter

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

code_assets, data_assets, ffi, hooks, logging, native_toolchain_cmake, path, yaml

More

Packages that depend on dartcv4