我目前正在使用 Flutter 開發一個應用程式,并且想使用 OpenCV 相關的腳本來讀取(OMR)。
我是否可以在 Flutter 中運行 Python OpenCV (.py) 并同時運行多個設備并且是生產服務器。
uj5u.com熱心網友回復:
是的,您可以將OPEN_CV庫用于 android 和 iOS 設備。
或者
您可以將chaquopy用于 Python 中的自定義腳本,僅適用于 android 設備。
uj5u.com熱心網友回復:
是的,有一個 opencv 庫,您可以匯入https://pub.dev/packages/opencv
您通過平臺渠道訪問 opencv https://docs.flutter.dev/development/platform-integration/platform-channels
try {
platformVersion = await OpenCV.platformVersion;
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
請參閱如何運行 opencv native How to use OpenCV 4 in native C of Flutter (in 2021) (support Flutter 2.0)?
關于如何在flutter中使用opencv實作邊緣檢測的分步說明
- 檢測發生在原生 C 中,您使用 Dart 外部函式介面或 dart:ffi 橋接到設備上運行的 C 代碼
https://www.flutterclutter.dev/flutter/tutorials/implementing-edge-detection-in-flutter/2020/1509/
final processImage = nativeEdgeDetection
.lookup<NativeFunction<ProcessImageFunction>>("process_image")
.asFunction<ProcessImageNativeFunction>();
you can access c functions as pointers by dart
https://stackoverflow.com/questions/68657817/flutter-get-image-as-data-back-from-c-opencv
read by access opencv code native using dart.ffi
https://docs.flutter.dev/development/platform-integration/c-interop
代碼
#include <stdint.h>
extern "C" __attribute__((visibility("default"))) __attribute__((used))
int32_t native_add(int32_t x, int32_t y) {
return x y;
}
dart 代碼(創建平臺或連接到 c/c 代碼的橋梁,然后查找代碼函式)
final DynamicLibrary nativeAddLib = Platform.isAndroid
? DynamicLibrary.open('libnative_add.so')
: DynamicLibrary.process();
final int Function(int x, int y) nativeAdd = nativeAddLib
.lookup<NativeFunction<Int32 Function(Int32, Int32)>>('native_add')
.asFunction();
dart 通過通道與作業系統通信
https://www.raywenderlich.com/21512310-calling-native-libraries-in-flutter-with-dart-ffi
quote:
dart 代碼不能直接與平臺代碼互操作。Dart 編譯器不能使用您的平臺代碼使用的相同型別、記憶體布局、函式簽名和其他較低級別的約定。
您需要在兩者之間架起一座橋梁,將 Dart 理解的代碼轉換為 Java、Kotlin、Swift 或 Objective-C 理解的代碼。
Flutter 作者通過插件和平臺通道解決了這個問題,它們讓訊息在 Dart 和平臺代碼之間傳遞。
dart.ffi 報價
正如前面提到的,FFI 代表外部函式介面,它是任何機制的總稱,它允許開發人員用一種編程語言撰寫代碼來呼叫或橋接用另一種編程語言撰寫的代碼。
opencv.js
訪問 opencv 的另一種令人印象深刻的方法是通過 javascript 嘗試使用 opencv.js
https://docs.opencv.org/3.4/d5/d10/tutorial_js_root.html
在 flutter 中呼叫 opencv.js 的分步說明
https://liewjuntung.medium.com/use-javascript-in-flutter-web-a6eed3efb9a0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/382330.html
上一篇:檢測兩個圓形物體之間的角度差
下一篇:礫石/骨料的分類
