Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

westracer/flutter_native_opencv

Open more actions menu

Repository files navigation

flutter_native_opencv

Using OpenCV natively in C++ in a Flutter app with Dart FFI. Tested with Flutter 2.5.2.

Read the full articles:

How to build & run

Android and iOS

Run init.sh script from a scripts folder or do the following steps manually:

  1. Download OpenCV for Android and iOS: https://opencv.org/releases/
  2. Copy or create symlinks:
    • opencv2.framework to native_opencv/ios
    • OpenCV-android-sdk/sdk/native/jni/include to native_opencv
    • Contents of OpenCV-android-sdk/sdk/native/libs/** to native_opencv/android/src/main/jniLibs/**

Windows

Run init_windows.ps1 PowerShell script from a scripts folder or do the following steps manually:

  1. Download OpenCV for Windows: https://opencv.org/releases/
  2. Unpack it. Set env. variable OpenCV_DIR to unpacked ...\opencv\build folder
  3. Create a hard link from native_opencv\ios\Classes\native_opencv.cpp to native_opencv_windows\windows\native_opencv.cpp
  4. Make sure native_opencv_windows\windows\CMakeLists.txt contains correct .dll names (OpenCV_DEBUG_DLL_NAME,OpenCV_RELEASE_DLL_NAME)

macOS

Before doing anything else, you need to download OpenCV source code and build a framework by running opencv/platforms/apple/build_xcframework.py script.

Run init_macos.sh script from a scripts folder or do the following steps manually:

  1. Create a hard link from native_opencv/ios/Classes/native_opencv.cpp to native_opencv_macos/macos/Classes/native_opencv.cpp
  2. Copy opencv2.xcframework to native_opencv/macos

Linux

Before doing anything else, you need to download OpenCV source code and build libraries by following the official tutorial.

After making a build, set up an environmental variable OpenCV_DIR to the build's folder.

Run init_linux.sh script from a scripts folder or do the following steps manually:

  1. Create a hard link from native_opencv/ios/Classes/native_opencv.cpp to native_opencv_linux/linux/native_opencv.cpp

Troubleshooting

  /snap/flutter/current/usr/include/x86_64-linux-gnu/gnu/stubs.h:7:11: fatal error: 'gnu/stubs-32.h' file not found
  # include <gnu/stubs-32.h>
            ^~~~~~~~~~~~~~~~
  1 error generated.
  ninja: build stopped: subcommand failed.

or

/snap/flutter/current/usr/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Exception: Build process failed

Install flutter manually instead of from snap, see: https://flutter.dev/docs/get-started/install/linux#install-flutter-manually

Contributors 2

  •  
  •  
Morty Proxy This is a proxified and sanitized view of the page, visit original site.