opencv_dart 0.6.7
opencv_dart: ^0.6.7 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.
!!!This package is experimental and APIs may change in the future!!!
WIP, contributions are welcome!
Platform | Supported | Tested | Prebuilt Binaries |
---|---|---|---|
Android | ✅ | ☑️ | x86_64, arm64-v8a, armeabi-v7a |
iOS | ✅ | ☑️ | arm64, x64(Simulator) |
Linux | ✅ | ✅ | x64 |
Windows | ✅ | ✅ | x64 |
macOS | ✅ | ✅ | x64, arm64 |
BREAKING CHANGES #
The refactor of #13 bas been finished,
since v1.0.0
, nearly ALL APIs were changed to compitable with opencv-python,
for example:
// old API
void cvtColor(Mat src, Mat dst, int code);
// new API
Mat cvtColor(Mat src, int code, {Mat? dst});
// then usage will be changed from:
cvtColor(src, dst, cv.COLOR_BGR2GRAY);
// to:
final dst = cvtColor(src, cv.COLOR_BGR2GRAY);
// or:
cvtColor(src, cv.COLOR_BGR2GRAY, dst: dst);
The New APIs will be published in v1.0.0
, if you are still using the old APIs and
do not want to upgrade, you can use the old versions less than v1.0.0
.
The OLD APIs won't get any updates from maintainer since v0.6.7
,
if you really need to use the old APIs, you can open PRs.
IMPORTANT #
Please run
dart run opencv_dart:setup <platform> --arch <arch>
to download prebuilt binaries.
- platform:
auto
android
linux
windows
macos
ios
- for Windows, arch:
x64
- for Linux, arch:
x64
- for macOS, arch:
x64
arm64
- for IOS, arch:
x64
arm64
- for Android, arch:
x86_64
arm64-v8a
armeabi-v7a
- run
dart run opencv_dart:setup -h
to see more options
Please use v0.3.0 and later version.
Example #
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 | ❌ | ❌ |
- ❌ : not finished
- ☑️ : partially supported
- ✅ : finished
- modules not in the above table are not considered, contributions are welcome
videoio:supported now.cv.VideoCapture
from file is not supported yet
Usage #
import 'package:opencv_dart/opencv_dart.dart' as cv;
void main() {
final img = cv.imread("test/images/lenna.png", flags: cv.IMREAD_COLOR);
final gray = cv.Mat.empty();
cv.cvtColor(img, gray, cv.COLOR_BGR2GRAY);
print("${img.rows}, ${img.cols}");
cv.imwrite("test_cvtcolor.png", gray);
}
More examples are on the way...
TODO #
- ✅
compile libs for android, linux - ✅
support for iOS, macOS - ❌ add more examples
- ❌ documentation
- ✅ modify C wrapper to catch exceptions
- ❌ Native Assets
- ❌ async?
- ✅
directly include opencv source code, refactor cmakelists.txt
For Developers #
This package is in heavy development, dynamic libraries for Windows and linux have been compiled, for other platforms, you need to compile it yourself.
How to compile #
-
prepare a compiler.
windows: Install Visual Studio 2019 or Later
ubuntu: reference opencv official build guide to install
sudo apt-get install build-essential libgtk-3-dev ffmpeg libavcodec-dev cmake \ ninja-build ccache nasm libavformat-dev libavutil-dev libswscale-dev \ libgflags-dev python3 libjpeg-dev libpng-dev libtiff-dev python3-pip
macos:
brew install --force --overwrite ninja ccache ffmpeg nasm cmake
from v0.6.4, build system has been migrated to conan
python3 -m pip install conan conan profile detect -f
-
clone this repo,
git clone https://github.com/rainyl/opencv_dart.git
-
cd opencv_dart
-
compile
for windows:
conan build . -b missing -s compiler.cppstd=20
for linux, macos:
conan build . -b missing
for android, you need to download android ndk
and opencv for android sdk, extract opencv sdk and copy and renameNO need for opencv sdk now, will be compiled from source to enable contrib modulesOpenCV-android-sdk
tobuild/opencv/android
directory.conan build . -b missing -pr:h profiles/android-<arch> -c tools.android:ndk_path="<ABSOLUTE path for ndk>"
for ios:
echo "tools.cmake.cmaketoolchain:user_toolchain=[\"`pwd`/profiles/ios.toolchain.cmake\"]" >> profiles/ios-<arch> conan build . -b missing -pr:h profiles/ios-<arch>
-
If you want to test using vscode, add dynamic library path to
"dart.env"
insettings.json
Acknowledgement #
gocv
project: https://github.com/hybridgroup/gocv License: Apache-2.0
License #
Apache-2.0 License