搜索插件、代码仓与 APP 分类

edge_detection 封面
插件详情v1.1.3

edge_detection

一个用于检测物体边缘、扫描纸张、检测角落和矩形的 Flutter 插件。它允许裁剪检测到的物体图像,并返回裁剪后图像的路径。

AndroidiOS
近 30 天下载
408
喜欢数
310
Pub 分数
150

安装插件

flutter pub add edge_detection

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个用于在图像中检测边缘、角点和矩形的 Flutter 插件,非常适合文档扫描。它可自动裁剪检测到的对象,并返回裁剪后图像的路径。专为 OCR 和计算机视觉应用设计,支持 Android 和 iOS 平台。该插件利用图像处理技术识别边界并优化扫描文档。

适合场景

  • 文档扫描
  • 图像裁剪
  • 纸质文档数字化
  • 对象边界检测
  • OCR 预处理
  • 矩形检测

主要特点

  • 边缘检测
  • 角点检测
  • 矩形识别
  • 自动图像裁剪
  • 返回裁剪后的图像路径
  • 跨平台支持(Android 和 iOS)

适合对象

  • 移动文档扫描仪
  • OCR 应用
  • 图像处理工具
  • 教育类应用程序
  • 摄影增强工具

使用建议

  • 需要相机访问权限
  • 性能在低端设备上可能有所不同
  • 使用高对比度图像可获得最佳效果
  • 限制为2D边缘检测
  • 可能需要对模糊图像进行预处理

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

edge_detection

A flutter plugin to detect edges of objects, scan paper, detect corners, detect rectangles. It allows cropping of the detected object image and returns the path of the cropped image.

Usage:

iOS

iOS 13.0 or higher is needed to use the plugin. If compiling for any version lower than 13.0 make sure to check the iOS version before using the plugin. Change the minimum platform version to 13 (or higher) in your ios/Podfile file, and inform/request access to the permissions acording with permission_handler

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',

        ## dart: PermissionGroup.camera
         'PERMISSION_CAMERA=1',

        ## dart: PermissionGroup.photos
         'PERMISSION_PHOTOS=1',
      ]

    end
    # End of the permission_handler configuration
  end
end

Fix build on xCode 15

Add this line to your Podfile in your project:

pod 'WeScan', :path => '.symlinks/plugins/edge_detection/ios/WeScan-3.0.0'

=> like this below:

target 'Runner' do
  use_frameworks!
  use_modular_headers!
  pod 'WeScan', :path => '.symlinks/plugins/edge_detection/ios/WeScan-3.0.0'
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

Add below permission to the ios/Runner/Info.plist:

  • one with the key Privacy - Camera Usage Description and a usage description.

Or in text format add the key:

<key>NSCameraUsageDescription</key>
<string>Can I use the camera please?</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Can I use the photos please?</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Can I use the photos please?</string>

Add to your need localizations to your app through XCode for localize actions buttons from WeScan (https://github.com/WeTransfer/WeScan/tree/master/WeScan/Resources/Localisation)

Android

The plugin code is written in kotlin 1.8.0 so the same has to be set to the android project of yours for compilation. Change the kotlin_version to 1.8.0 in your android/build.gradle file.

ext.kotlin_version = '1.8.0'

Change the minimum Android SDK version to 21 (or higher) in your android/app/build.gradle file.

minSdkVersion 21
Add dependency:

Please check the latest version before installation.

dependencies:
  flutter:
    sdk: flutter
  edge_detection: ^1.1.3
  permission_handler: ^10.0.0
  path_provider: ^2.0.11
  path: ^1.8.2
Add the following imports to your Dart code:
import 'package:edge_detection/edge_detection.dart';
// Check permissions and request its
bool isCameraGranted = await Permission.camera.request().isGranted;
if (!isCameraGranted) {
    isCameraGranted = await Permission.camera.request() == PermissionStatus.granted;
}

if (!isCameraGranted) {
    // Have not permission to camera
    return;
}

// Generate filepath for saving
String imagePath = join((await getApplicationSupportDirectory()).path,
    "${(DateTime.now().millisecondsSinceEpoch / 1000).round()}.jpeg");

// Use below code for live camera detection with option to select from gallery in the camera feed.

try {
    //Make sure to await the call to detectEdge.
    bool success = await EdgeDetection.detectEdge(imagePath,
        canUseGallery: true,
        androidScanTitle: 'Scanning', // use custom localizations for android
        androidCropTitle: 'Crop',
        androidCropBlackWhiteTitle: 'Black White',
        androidCropReset: 'Reset',
    );
} catch (e) {
    print(e);
}

// Use below code for selecting directly from the gallery.

try {
    //Make sure to await the call to detectEdgeFromGallery.
    bool success = await EdgeDetection.detectEdgeFromGallery(imagePath,
        androidCropTitle: 'Crop', // use custom localizations for android
        androidCropBlackWhiteTitle: 'Black White',
        androidCropReset: 'Reset',
    );
} catch (e) {
    print(e);
}

Demo

Demo

Screenshots

Android

iOS

Using these native implementation
https://github.com/WeTransfer/WeScan

https://github.com/KePeng1019/SmartPaperScan

所属分类

源码仓库

使用此插件的项目