OpenCV Bindings for Dart Language.
Important
Please use v0.3.0 and later version, usage:
flutter pub add opencv_dart
ordart pub add opencv_dart
dart run opencv_dart:setup <platform> --arch <arch>
platform |
arch |
---|---|
android |
x86_64 arm64-v8a armeabi-v7a |
linux |
x64 |
windows |
x64 |
macos |
x64 arm64 |
ios |
x64 arm64 |
- run your app as normal
- More questions: refer to #29 or open new issues.
- If you are using flutter with Native Assets feature supported, consider using v2.x version, see more in native-assets branch
Warning
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);
If you really need updates for v0.6.x
, open PRs and it will be merged to v0.6
branch.
Note
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 |
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 |
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
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.cvtColor(img, cv.COLOR_BGR2GRAY);
print("${img.rows}, ${img.cols}");
cv.imwrite("test_cvtcolor.png", gray);
}
see example
More examples are on the way...
-
compile libs for android, linux -
support for iOS, macOS - add more examples
- documentation
-
modify C wrapper to catch exceptions - Native Assets, see
native-assets
branch - async?
- more/full test coverage
-
directly include opencv source code, refactor cmakelists.txt
Note
since v1.0.1, to speed up compile in CI, opencv is precompiled in opencv.full,
and this repo will download the prebuilt static libraries from it's release,
if you want to compile entirely by yourself,
you can compile opencv and explicitly set -o opencv_dir=<path to opencv>
for the
below commands or set OpenCV_DIR
environment variable.
-
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
With proper toolchain, cross-compiling is possible, compiling for linux aarch64 requires GCC 13 and newer, conan toolchain for linux arm is located in opencv.full, explore more there.
gocv
project: https://github.com/hybridgroup/gocv License: Apache-2.0
Apache-2.0 License