This commit is contained in:
2021-11-17 14:57:56 -06:00
commit f17b64232d
177 changed files with 6639 additions and 0 deletions

49
lib/native_opencv.dart Normal file
View File

@@ -0,0 +1,49 @@
import 'dart:ffi' as ffi;
import 'dart:io';
import 'package:ffi/ffi.dart';
// C function signatures
typedef _CVersionFunc = ffi.Pointer<Utf8> Function();
typedef _CProcessImageFunc = ffi.Void Function(
ffi.Pointer<Utf8>, ffi.Pointer<Utf8>, ffi.Double);
// Dart function signatures
typedef _VersionFunc = ffi.Pointer<Utf8> Function();
typedef _ProcessImageFunc = void Function(
ffi.Pointer<Utf8>, ffi.Pointer<Utf8>, double);
// Getting a library that holds needed symbols
ffi.DynamicLibrary _openDynamicLibrary() {
if (Platform.isAndroid) {
return ffi.DynamicLibrary.open('libnative_opencv.so');
} else if (Platform.isWindows) {
return ffi.DynamicLibrary.open("native_opencv_windows_plugin.dll");
}
return ffi.DynamicLibrary.process();
}
ffi.DynamicLibrary _lib = _openDynamicLibrary();
// Looking for the functions
final _VersionFunc _version =
_lib.lookup<ffi.NativeFunction<_CVersionFunc>>('version').asFunction();
final _ProcessImageFunc _processImage = _lib
.lookup<ffi.NativeFunction<_CProcessImageFunc>>('process_image')
.asFunction();
String opencvVersion() {
return _version().toDartString();
}
void processImage(ProcessImageArguments args) {
_processImage(args.inputPath.toNativeUtf8(), args.outputPath.toNativeUtf8(),
args.frameRate);
}
class ProcessImageArguments {
final String inputPath;
final String outputPath;
final double frameRate;
ProcessImageArguments(this.inputPath, this.outputPath, this.frameRate);
}