opencv_dart 2.2.2 copy "opencv_dart: ^2.2.2" to clipboard
opencv_dart: ^2.2.2 copied to clipboard

OpenCV4 bindings for Flutter, using dart:ffi.

opencv_dart #

OpenCV for Flutter.

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

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 #

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 awesome-opencv_dart 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:
      • imgproc
      • imgcodecs
    • excluded by default:
      • calib3d
      • features2d
      • flann
      • dnn
      • freetype
      • highgui
      • video
      • videoio
      • objdetect
      • photo
      • stitching
      • aruco
      • img_hash
      • quality
      • wechat_qrcode
      • ximgproc
      • xobjdetect
  • 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). FFMPEG is no longer availabel with dartcv >= 2.2.0

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
dupuchba
Baptiste DUPUCH
Escaton615
Escaton615
mdeleau
mdeleau
lennartalff
Thies Lennart Alff
totemat
Matteo T.

Acknowledgement #

Star History #

Star History Chart

License #

Apache-2.0 License

135
likes
140
points
12.8k
downloads

Documentation

API reference

Publisher

verified publisherrainyl.dev

Weekly Downloads

OpenCV4 bindings for Flutter, using dart:ffi.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#opencv #image #ffi #flutter

License

Apache-2.0 (license)

Dependencies

dartcv4, flutter

More

Packages that depend on opencv_dart