diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.metadata b/.metadata old mode 100644 new mode 100755 diff --git a/CHANGELOG.md b/CHANGELOG.md old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index c7b86e1..94b0d30 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ import 'package:flutter_vision/flutter_vision.dart'; 3. Initialized the flutter_vision library: -```dart +```dart FlutterVision vision = FlutterVision(); ``` @@ -110,7 +110,7 @@ import 'package:flutter_vision/flutter_vision.dart'; 4. Initialized the flutter_vision library: -```dart +```dart FlutterVision vision = FlutterVision(); ``` diff --git a/analysis_options.yaml b/analysis_options.yaml old mode 100644 new mode 100755 diff --git a/android/.gitignore b/android/.gitignore old mode 100644 new mode 100755 diff --git a/android/build.gradle b/android/build.gradle old mode 100644 new mode 100755 diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 diff --git a/android/gradlew b/android/gradlew old mode 100644 new mode 100755 diff --git a/android/gradlew.bat b/android/gradlew.bat old mode 100644 new mode 100755 diff --git a/android/libs/tesseract4android-release.aar b/android/libs/tesseract4android-release.aar old mode 100644 new mode 100755 diff --git a/android/settings.gradle b/android/settings.gradle old mode 100644 new mode 100755 diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/FlutterVisionPlugin.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/FlutterVisionPlugin.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Tesseract.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Tesseract.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolo.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolo.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolov5.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolov5.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolov8.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolov8.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolov8Seg.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/models/Yolov8Seg.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/utils/FeedInputTensorHelper.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/utils/FeedInputTensorHelper.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/utils/RenderScriptHelper.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/utils/RenderScriptHelper.java old mode 100644 new mode 100755 diff --git a/android/src/main/java/com/vladih/computer_vision/flutter_vision/utils/utils.java b/android/src/main/java/com/vladih/computer_vision/flutter_vision/utils/utils.java old mode 100644 new mode 100755 diff --git a/example/.gitignore b/example/.gitignore old mode 100644 new mode 100755 diff --git a/example/.metadata b/example/.metadata old mode 100644 new mode 100755 index 5a02328..eaad634 --- a/example/.metadata +++ b/example/.metadata @@ -4,7 +4,27 @@ # This file should be version controlled and should not be manually edited. version: - revision: 7e9793dee1b85a243edd0e06cb1658e98b077561 - channel: stable + revision: "367f9ea16bfae1ca451b9cc27c1366870b187ae2" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2 + base_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2 + - platform: android + create_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2 + base_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/example/README.md b/example/README.md old mode 100644 new mode 100755 diff --git a/example/analysis_options.yaml b/example/analysis_options.yaml old mode 100644 new mode 100755 diff --git a/example/android/.gitignore b/example/android/.gitignore old mode 100644 new mode 100755 diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle old mode 100644 new mode 100755 index c0c4fa7..e0cbd7a --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,22 +22,30 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { + namespace "com.example.example" compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.vladih.computer_vision.flutter_vision_example" - minSdkVersion localProperties.getProperty('flutter.minSdkVersion').toInteger() + applicationId "com.example.example" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion 21 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName @@ -54,3 +63,5 @@ android { flutter { source '../..' } + +dependencies {} diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml old mode 100644 new mode 100755 index 8117cc5..399f698 --- a/example/android/app/src/debug/AndroidManifest.xml +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,6 @@ - - diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml old mode 100644 new mode 100755 index 51056b1..17d1b9e --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,12 +1,11 @@ - - - + + + + + android:icon="@mipmap/ic_launcher"> diff --git a/example/android/build.gradle b/example/android/build.gradle old mode 100644 new mode 100755 index 0a2d6a1..f7eb7f6 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:7.3.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/example/android/gradle.properties b/example/android/gradle.properties old mode 100644 new mode 100755 index d5466d8..94adc3a --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,4 +1,3 @@ -#org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -org.gradle.jvmargs=-Xmx4096m diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 index eeaff8a..3c472b9 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed Feb 22 16:51:52 CET 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/example/android/settings.gradle b/example/android/settings.gradle old mode 100644 new mode 100755 index 44e62bc..55c4ca8 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,11 +1,20 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + plugins { + id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +include ":app" + +apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/example/assets/labels.txt b/example/assets/labels.txt old mode 100644 new mode 100755 diff --git a/example/assets/tessdata/spa.traineddata b/example/assets/tessdata/spa.traineddata deleted file mode 100644 index f703e05..0000000 Binary files a/example/assets/tessdata/spa.traineddata and /dev/null differ diff --git a/example/assets/tessdata_config.json b/example/assets/tessdata_config.json deleted file mode 100644 index 521c2d9..0000000 --- a/example/assets/tessdata_config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "files": [ - "spa.traineddata" - ] - } \ No newline at end of file diff --git a/example/assets/yolov5n.tflite b/example/assets/yolov5n.tflite old mode 100644 new mode 100755 diff --git a/example/assets/yolov8n-seg.tflite b/example/assets/yolov8n-seg.tflite old mode 100644 new mode 100755 diff --git a/example/assets/yolov8n.tflite b/example/assets/yolov8n.tflite deleted file mode 100644 index b8aeb41..0000000 Binary files a/example/assets/yolov8n.tflite and /dev/null differ diff --git a/example/ios/.gitignore b/example/ios/.gitignore old mode 100644 new mode 100755 diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist old mode 100644 new mode 100755 diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig old mode 100644 new mode 100755 diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist old mode 100644 new mode 100755 diff --git a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings old mode 100644 new mode 100755 diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/example/ios/Runner/Base.lproj/LaunchScreen.storyboard old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Base.lproj/Main.storyboard b/example/ios/Runner/Base.lproj/Main.storyboard old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist old mode 100644 new mode 100755 diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/example/ios/Runner/Runner-Bridging-Header.h old mode 100644 new mode 100755 diff --git a/example/lib/main.dart b/example/lib/main.dart old mode 100644 new mode 100755 index 5cd7dc8..66412a9 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,7 +1,3 @@ -import 'dart:io'; -import 'dart:typed_data'; -import 'dart:ui'; - import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; @@ -9,21 +5,27 @@ import 'dart:async'; import 'package:flutter_vision/flutter_vision.dart'; import 'package:image_picker/image_picker.dart'; -enum Options { none, imagev5, imagev8, imagev8seg, frame, tesseract, vision } +import 'dart:io'; +import 'dart:typed_data'; +import 'dart:ui'; + +enum Options { none, imagev5, imagev8seg, frame } late List cameras; + main() async { WidgetsFlutterBinding.ensureInitialized(); DartPluginRegistrant.ensureInitialized(); runApp( const MaterialApp( + debugShowCheckedModeBanner: false, home: MyApp(), ), ); } class MyApp extends StatefulWidget { - const MyApp({Key? key}) : super(key: key); + const MyApp({super.key}); @override State createState() => _MyAppState(); @@ -41,7 +43,6 @@ class _MyAppState extends State { @override void dispose() async { super.dispose(); - await vision.closeTesseractModel(); await vision.closeYoloModel(); } @@ -62,7 +63,7 @@ class _MyAppState extends State { closeManually: false, curve: Curves.bounceIn, overlayColor: Colors.black, - overlayOpacity: 0.5, + overlayOpacity: 0.0, buttonSize: const Size(56.0, 56.0), children: [ SpeedDialChild( @@ -70,7 +71,7 @@ class _MyAppState extends State { child: const Icon(Icons.video_call), backgroundColor: Colors.red, foregroundColor: Colors.white, - label: 'Yolo on Frame', + label: 'YoloV5 on Frame', labelStyle: const TextStyle(fontSize: 18.0), onTap: () { setState(() { @@ -90,18 +91,6 @@ class _MyAppState extends State { }); }, ), - SpeedDialChild( - child: const Icon(Icons.camera), - backgroundColor: Colors.blue, - foregroundColor: Colors.white, - label: 'YoloV8 on Image', - labelStyle: const TextStyle(fontSize: 18.0), - onTap: () { - setState(() { - option = Options.imagev8; - }); - }, - ), SpeedDialChild( child: const Icon(Icons.camera), backgroundColor: Colors.blue, @@ -114,30 +103,6 @@ class _MyAppState extends State { }); }, ), - SpeedDialChild( - child: const Icon(Icons.text_snippet_outlined), - foregroundColor: Colors.white, - backgroundColor: Colors.green, - label: 'Tesseract', - labelStyle: const TextStyle(fontSize: 18.0), - onTap: () { - setState(() { - option = Options.tesseract; - }); - }, - ), - // SpeedDialChild( - // child: const Icon(Icons.document_scanner), - // foregroundColor: Colors.white, - // backgroundColor: Colors.green, - // label: 'Vision', - // labelStyle: const TextStyle(fontSize: 18.0), - // onTap: () { - // setState(() { - // option = Options.vision; - // }); - // }, - // ), ], ), ); @@ -145,27 +110,21 @@ class _MyAppState extends State { Widget task(Options option) { if (option == Options.frame) { - return YoloVideo(vision: vision); + return YoloVideo(vision: vision); // YOLO V5 Real-Time } if (option == Options.imagev5) { return YoloImageV5(vision: vision); } - if (option == Options.imagev8) { - return YoloImageV8(vision: vision); - } if (option == Options.imagev8seg) { return YoloImageV8Seg(vision: vision); } - if (option == Options.tesseract) { - return TesseractImage(vision: vision); - } return const Center(child: Text("Choose Task")); } } class YoloVideo extends StatefulWidget { final FlutterVision vision; - const YoloVideo({Key? key, required this.vision}) : super(key: key); + const YoloVideo({super.key, required this.vision}); @override State createState() => _YoloVideoState(); @@ -186,7 +145,7 @@ class _YoloVideoState extends State { init() async { cameras = await availableCameras(); - controller = CameraController(cameras[0], ResolutionPreset.medium); + controller = CameraController(cameras[0], ResolutionPreset.high); controller.initialize().then((value) { loadYoloModel().then((value) { setState(() { @@ -210,7 +169,7 @@ class _YoloVideoState extends State { if (!isLoaded) { return const Scaffold( body: Center( - child: Text("Model not loaded, waiting for it"), + child: Text("Model not loaded. Waiting for it."), ), ); } @@ -265,9 +224,9 @@ class _YoloVideoState extends State { Future loadYoloModel() async { await widget.vision.loadYoloModel( labels: 'assets/labels.txt', - modelPath: 'assets/yolov8n.tflite', - modelVersion: "yolov8", - numThreads: 2, + modelPath: 'assets/yolov5n.tflite', + modelVersion: "yolov5", + numThreads: 4, useGpu: true); setState(() { isLoaded = true; @@ -343,9 +302,11 @@ class _YoloVideoState extends State { } } +// YOLO V5 OBJECT DETECTION + class YoloImageV5 extends StatefulWidget { final FlutterVision vision; - const YoloImageV5({Key? key, required this.vision}) : super(key: key); + const YoloImageV5({super.key, required this.vision}); @override State createState() => _YoloImageV5State(); @@ -380,7 +341,7 @@ class _YoloImageV5State extends State { if (!isLoaded) { return const Scaffold( body: Center( - child: Text("Model not loaded, waiting for it"), + child: Text("Model not loaded. Waiting for it."), ), ); } @@ -415,7 +376,7 @@ class _YoloImageV5State extends State { modelPath: 'assets/yolov5n.tflite', modelVersion: "yolov5", quantization: false, - numThreads: 2, + numThreads: 4, useGpu: true); setState(() { isLoaded = true; @@ -462,13 +423,13 @@ class _YoloImageV5State extends State { double newHeight = newWidth / imgRatio; double factorY = newHeight / (imageHeight); - double pady = (screen.height - newHeight) / 2; + double pad = (screen.height - newHeight) / 2; Color colorPick = const Color.fromARGB(255, 50, 233, 30); return yoloResults.map((result) { return Positioned( left: result["box"][0] * factorX, - top: result["box"][1] * factorY + pady, + top: result["box"][1] * factorY + pad, width: (result["box"][2] - result["box"][0]) * factorX, height: (result["box"][3] - result["box"][1]) * factorY, child: Container( @@ -490,156 +451,11 @@ class _YoloImageV5State extends State { } } -class YoloImageV8 extends StatefulWidget { - final FlutterVision vision; - const YoloImageV8({Key? key, required this.vision}) : super(key: key); - - @override - State createState() => _YoloImageV8State(); -} - -class _YoloImageV8State extends State { - late List> yoloResults; - File? imageFile; - int imageHeight = 1; - int imageWidth = 1; - bool isLoaded = false; - - @override - void initState() { - super.initState(); - loadYoloModel().then((value) { - setState(() { - yoloResults = []; - isLoaded = true; - }); - }); - } - - @override - void dispose() async { - super.dispose(); - } - - @override - Widget build(BuildContext context) { - final Size size = MediaQuery.of(context).size; - if (!isLoaded) { - return const Scaffold( - body: Center( - child: Text("Model not loaded, waiting for it"), - ), - ); - } - return Stack( - fit: StackFit.expand, - children: [ - imageFile != null ? Image.file(imageFile!) : const SizedBox(), - Align( - alignment: Alignment.bottomCenter, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - TextButton( - onPressed: pickImage, - child: const Text("Pick an image"), - ), - ElevatedButton( - onPressed: yoloOnImage, - child: const Text("Detect"), - ) - ], - ), - ), - ...displayBoxesAroundRecognizedObjects(size), - ], - ); - } - - Future loadYoloModel() async { - await widget.vision.loadYoloModel( - labels: 'assets/labels.txt', - modelPath: 'assets/yolov8n.tflite', - modelVersion: "yolov8", - quantization: false, - numThreads: 2, - useGpu: true); - setState(() { - isLoaded = true; - }); - } - - Future pickImage() async { - final ImagePicker picker = ImagePicker(); - // Capture a photo - final XFile? photo = await picker.pickImage(source: ImageSource.gallery); - if (photo != null) { - setState(() { - imageFile = File(photo.path); - }); - } - } - - yoloOnImage() async { - yoloResults.clear(); - Uint8List byte = await imageFile!.readAsBytes(); - final image = await decodeImageFromList(byte); - imageHeight = image.height; - imageWidth = image.width; - final result = await widget.vision.yoloOnImage( - bytesList: byte, - imageHeight: image.height, - imageWidth: image.width, - iouThreshold: 0.8, - confThreshold: 0.4, - classThreshold: 0.5); - if (result.isNotEmpty) { - setState(() { - yoloResults = result; - }); - } - } - - List displayBoxesAroundRecognizedObjects(Size screen) { - if (yoloResults.isEmpty) return []; - - double factorX = screen.width / (imageWidth); - double imgRatio = imageWidth / imageHeight; - double newWidth = imageWidth * factorX; - double newHeight = newWidth / imgRatio; - double factorY = newHeight / (imageHeight); - - double pady = (screen.height - newHeight) / 2; - - Color colorPick = const Color.fromARGB(255, 50, 233, 30); - return yoloResults.map((result) { - return Positioned( - left: result["box"][0] * factorX, - top: result["box"][1] * factorY + pady, - width: (result["box"][2] - result["box"][0]) * factorX, - height: (result["box"][3] - result["box"][1]) * factorY, - child: Container( - decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(10.0)), - border: Border.all(color: Colors.pink, width: 2.0), - ), - child: Text( - "${result['tag']} ${(result['box'][4] * 100).toStringAsFixed(0)}%", - style: TextStyle( - background: Paint()..color = colorPick, - color: Colors.white, - fontSize: 18.0, - ), - ), - ), - ); - }).toList(); - } -} +// YOLO V8 SEMANTIC SEGMENTATION class YoloImageV8Seg extends StatefulWidget { final FlutterVision vision; - const YoloImageV8Seg({Key? key, required this.vision}) : super(key: key); + const YoloImageV8Seg({super.key, required this.vision}); @override State createState() => _YoloImageV8SegState(); @@ -674,7 +490,7 @@ class _YoloImageV8SegState extends State { if (!isLoaded) { return const Scaffold( body: Center( - child: Text("Model not loaded, waiting for it"), + child: Text("Model not loaded. Waiting for it."), ), ); } @@ -709,7 +525,7 @@ class _YoloImageV8SegState extends State { modelPath: 'assets/yolov8n-seg.tflite', modelVersion: "yolov8seg", quantization: false, - numThreads: 2, + numThreads: 4, useGpu: true); setState(() { isLoaded = true; @@ -756,14 +572,14 @@ class _YoloImageV8SegState extends State { double newHeight = newWidth / imgRatio; double factorY = newHeight / (imageHeight); - double pady = (screen.height - newHeight) / 2; + double pad = (screen.height - newHeight) / 2; Color colorPick = const Color.fromARGB(255, 50, 233, 30); return yoloResults.map((result) { return Stack(children: [ Positioned( left: result["box"][0] * factorX, - top: result["box"][1] * factorY + pady, + top: result["box"][1] * factorY + pad, width: (result["box"][2] - result["box"][0]) * factorX, height: (result["box"][3] - result["box"][1]) * factorY, child: Container( @@ -783,7 +599,7 @@ class _YoloImageV8SegState extends State { ), Positioned( left: result["box"][0] * factorX, - top: result["box"][1] * factorY + pady, + top: result["box"][1] * factorY + pad, width: (result["box"][2] - result["box"][0]) * factorX, height: (result["box"][3] - result["box"][1]) * factorY, child: CustomPaint( @@ -828,106 +644,4 @@ class PolygonPainter extends CustomPainter { bool shouldRepaint(CustomPainter oldDelegate) { return false; } -} - -class TesseractImage extends StatefulWidget { - final FlutterVision vision; - const TesseractImage({Key? key, required this.vision}) : super(key: key); - - @override - State createState() => _TesseractImageState(); -} - -class _TesseractImageState extends State { - late List> tesseractResults = []; - File? imageFile; - bool isLoaded = false; - - @override - void initState() { - super.initState(); - loadTesseractModel().then((value) { - setState(() { - isLoaded = true; - tesseractResults = []; - }); - }); - } - - @override - void dispose() async { - super.dispose(); - } - - @override - Widget build(BuildContext context) { - if (!isLoaded) { - return const Scaffold( - body: Center( - child: Text("Model not loaded, waiting for it"), - ), - ); - } - return Center( - child: SingleChildScrollView( - child: Column( - children: [ - imageFile != null ? Image.file(imageFile!) : const SizedBox(), - tesseractResults.isEmpty - ? const SizedBox() - : Align(child: Text(tesseractResults[0]["text"])), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - TextButton( - onPressed: pickImage, - child: const Text("Pick an image"), - ), - ElevatedButton( - onPressed: tesseractOnImage, - child: const Text("Get Text"), - ) - ], - ), - ], - ), - ), - ); - } - - Future loadTesseractModel() async { - await widget.vision.loadTesseractModel( - args: { - 'psm': '11', - 'oem': '1', - 'preserve_interword_spaces': '1', - }, - language: 'spa', - ); - setState(() { - isLoaded = true; - }); - } - - Future pickImage() async { - final ImagePicker picker = ImagePicker(); - // Capture a photo - final XFile? photo = await picker.pickImage(source: ImageSource.gallery); - if (photo != null) { - setState(() { - imageFile = File(photo.path); - }); - } - } - - tesseractOnImage() async { - tesseractResults.clear(); - Uint8List byte = await imageFile!.readAsBytes(); - final result = await widget.vision.tesseractOnImage(bytesList: byte); - if (result.isNotEmpty) { - setState(() { - tesseractResults = result; - }); - } - } -} +} \ No newline at end of file diff --git a/example/pubspec.lock b/example/pubspec.lock old mode 100644 new mode 100755 index ea61623..c27637b --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -21,42 +21,42 @@ packages: dependency: "direct main" description: name: camera - sha256: "3ad71371b8168a4c8012c0b40a53c05afc75d46cc688b0f37b4611a841d47b25" + sha256: "9499cbc2e51d8eb0beadc158b288380037618ce4e30c9acbc4fae1ac3ecb5797" url: "https://pub.dev" source: hosted - version: "0.9.8+1" + version: "0.10.5+9" camera_android: dependency: transitive description: name: camera_android - sha256: "665d62c1f334722c7519ca5d3b94ad68ecaa801691870602da5638a42c1fff67" + sha256: b350ac087f111467e705b2b76cc1322f7f5bdc122aa83b4b243b0872f390d229 url: "https://pub.dev" source: hosted - version: "0.9.8+3" + version: "0.10.9+2" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "6a68c20593d4cd58974d555f74a48b244f9db28cc9156de57781122d11b8754b" + sha256: "608b56b0880722f703871329c4d7d4c2f379c8e2936940851df7fc041abc6f51" url: "https://pub.dev" source: hosted - version: "0.9.11" + version: "0.9.13+10" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: b632be28e61d00a233f67d98ea90fd7041956f27a1c65500188ee459be60e15f + sha256: a250314a48ea337b35909a4c9d5416a208d736dcb01d0b02c6af122be66660b0 url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.7.4" camera_web: dependency: transitive description: name: camera_web - sha256: "18cdbee5441e9a6fb129fdd9b68a06d1b8c5236932ba97d5faeaefe80db2e5bd" + sha256: "9e9aba2fbab77ce2472924196ff8ac4dd8f9126c4f9a3096171cd1d870d6b26c" url: "https://pub.dev" source: hosted - version: "0.2.1+6" + version: "0.3.3" characters: dependency: transitive description: @@ -85,18 +85,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" url: "https://pub.dev" source: hosted - version: "0.3.3+4" + version: "0.3.3+7" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.8" fake_async: dependency: transitive description: @@ -109,18 +109,42 @@ packages: dependency: transitive description: name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "2.0.1" - file: + version: "2.1.0" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + url: "https://pub.dev" + source: hosted + version: "0.9.2+1" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: f42eacb83b318e183b1ae24eead1373ab1334084404c8c16e0354f9a3e55d385 + url: "https://pub.dev" + source: hosted + version: "0.9.4" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + url: "https://pub.dev" + source: hosted + version: "2.6.2" + file_selector_windows: dependency: transitive description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + name: file_selector_windows + sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "0.9.3+1" flutter: dependency: "direct main" description: flutter @@ -130,26 +154,26 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "4.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "60fc7b78455b94e6de2333d2f95196d32cf5c22f4b0b0520a628804cb463503b" + sha256: "592dc01a18961a51c24ae5d963b724b2b7fa4a95c100fe8eb6ca8a5a4732cadf" url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.18" flutter_speed_dial: dependency: "direct main" description: name: flutter_speed_dial - sha256: "41d7ad0bc224248637b3a5e0b9083e912a75445bdb450cf82b8ed06d7af7c61d" + sha256: "698a037274a66dbae8697c265440e6acb6ab6cae9ac5f95c749e7944d8f28d41" url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "7.0.0" flutter_test: dependency: "direct dev" description: flutter @@ -161,7 +185,7 @@ packages: path: ".." relative: true source: path - version: "1.1.2" + version: "1.1.4" flutter_web_plugins: dependency: transitive description: flutter @@ -171,10 +195,10 @@ packages: dependency: transitive description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "1.1.0" http_parser: dependency: transitive description: @@ -187,58 +211,82 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "22207768556b82d55ec70166824350fee32298732d5efa4d6e756f848f51f66a" + sha256: "1f498d086203360cca099d20ffea2963f48c39ce91bdd8a3b6d4a045786b02c8" url: "https://pub.dev" source: hosted - version: "0.8.6+3" + version: "1.0.8" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "68d067baf7f6e401b1124ee83dd6967e67847314250fd68012aab34a69beb344" + sha256: "42c098e7fb6334746be37cdc30369ade356ed4f14d48b7a0313f95a9159f4321" url: "https://pub.dev" source: hosted - version: "0.8.5+7" + version: "0.8.9+5" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "66fc6e3877bbde82c33d122f3588777c3784ac5bd7d1cdd79213ef7aecb85b34" + sha256: e2423c53a68b579a7c37a1eda967b8ae536c3d98518e5db95ca1fe5719a730a3 url: "https://pub.dev" source: hosted - version: "2.1.11" + version: "3.0.2" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "39aa70b5f1e5e7c94585b9738632d5fdb764a5655e40cd9e7b95fbd2fc50c519" + sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 + url: "https://pub.dev" + source: hosted + version: "0.8.9+1" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" url: "https://pub.dev" source: hosted - version: "0.8.6+9" + version: "0.2.1+1" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "1991219d9dbc42a99aff77e663af8ca51ced592cd6685c9485e3458302d3d4f8" + sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b + url: "https://pub.dev" + source: hosted + version: "2.9.3" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" url: "https://pub.dev" source: hosted - version: "2.6.3" + version: "0.2.1+1" js: dependency: transitive description: name: js - sha256: a5e201311cb08bf3912ebbe9a2be096e182d703f881136ec1e81a2338a9e120d + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.7" lints: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "4.0.0" matcher: dependency: transitive description: @@ -263,6 +311,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + mime: + dependency: transitive + description: + name: mime + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" + source: hosted + version: "1.0.4" path: dependency: transitive description: @@ -275,82 +331,66 @@ packages: dependency: transitive description: name: path_provider - sha256: dcea5feb97d8abf90cab9e9030b497fb7c3cbf26b7a1fe9e3ef7dcb0a1ddec95 + sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 url: "https://pub.dev" source: hosted - version: "2.0.12" + version: "2.1.3" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e + sha256: "51f0d2c554cfbc9d6a312ab35152fc77e2f0b758ce9f1a444a3a1e5b8f3c6b7f" url: "https://pub.dev" source: hosted - version: "2.0.22" + version: "2.2.3" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "62a68e7e1c6c459f9289859e2fae58290c981ce21d1697faf54910fe1faa4c74" + sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.3.2" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: "2e32f1640f07caef0d3cb993680f181c79e54a3827b997d5ee221490d131fbd9" + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.8" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76 + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.1" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.4" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.3" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" - quiver: - dependency: transitive - description: - name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 - url: "https://pub.dev" - source: hosted - version: "3.2.1" + version: "2.1.8" sky_engine: dependency: transitive description: flutter @@ -416,10 +456,10 @@ packages: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" vector_math: dependency: transitive description: @@ -440,18 +480,18 @@ packages: dependency: transitive description: name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574 url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "5.1.1" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.4" sdks: - dart: ">=3.1.0-185.0.dev <4.0.0" - flutter: ">=3.0.0" + dart: ">=3.1.0 <4.0.0" + flutter: ">=3.13.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml old mode 100644 new mode 100755 index c29ed4a..6da36f0 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -15,14 +15,15 @@ environment: # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: - camera: ^0.9.8+1 + #camera: ^0.9.8+1 + camera: ^0.10.5 cupertino_icons: ^1.0.5 flutter: sdk: flutter flutter_vision: path: ../ - flutter_speed_dial: ^6.2.0 - image_picker: ^0.8.6+3 + flutter_speed_dial: ^7.0.0 + image_picker: ^1.0.4 dev_dependencies: # The "flutter_lints" package below contains a set of recommended lints to @@ -30,7 +31,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^2.0.1 + flutter_lints: ^4.0.0 flutter_test: sdk: flutter @@ -48,7 +49,7 @@ flutter: - assets/ - assets/labels.txt - assets/yolov5n.tflite - - assets/tessdata/ + - assets/yolov8n-seg.tflite # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. # For details regarding adding assets from package dependencies, see diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart old mode 100644 new mode 100755 diff --git a/ios/.gitignore b/ios/.gitignore old mode 100644 new mode 100755 diff --git a/ios/Assets/.gitkeep b/ios/Assets/.gitkeep old mode 100644 new mode 100755 diff --git a/ios/Classes/FlutterVisionPlugin.h b/ios/Classes/FlutterVisionPlugin.h old mode 100644 new mode 100755 diff --git a/ios/Classes/FlutterVisionPlugin.m b/ios/Classes/FlutterVisionPlugin.m old mode 100644 new mode 100755 diff --git a/ios/Classes/SwiftFlutterVisionPlugin.swift b/ios/Classes/SwiftFlutterVisionPlugin.swift old mode 100644 new mode 100755 diff --git a/ios/flutter_vision.podspec b/ios/flutter_vision.podspec old mode 100644 new mode 100755 diff --git a/lib/flutter_vision.dart b/lib/flutter_vision.dart old mode 100644 new mode 100755 diff --git a/lib/src/plugin/android.dart b/lib/src/plugin/android.dart old mode 100644 new mode 100755 diff --git a/lib/src/plugin/base.dart b/lib/src/plugin/base.dart old mode 100644 new mode 100755 diff --git a/pubspec.yaml b/pubspec.yaml old mode 100644 new mode 100755 diff --git a/test/flutter_vision_test.dart b/test/flutter_vision_test.dart old mode 100644 new mode 100755