Flutter苹果视觉功能集成插件unified_apple_vision的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter 苹果视觉功能集成插件 unified_apple_vision 的使用

unified_apple_vision 🍎

License: MIT Pub Version Completed Feature

此插件用于在 Flutter 中使用 Apple Vision Framework,旨在将多个 API 集成到一个插件中,并同时处理多个分析请求。

特性 ⚙️ & 要求 🧩

最低要求:

  • iOS: 13.0+
  • macOS: 15.0+

警告

注意,这与 VisionAPI 的最低要求不同。

Vision API 请求 状态 iOS macOS 描述
Still Image Analysis Classify Image 13.0+ 10.15+ 分析图像分类
Still Image Analysis Generate Image Feature Print 13.0+ 10.15+ 从图像生成特征打印
Image Sequence Analysis Generate Person Segmentation 15.0+ 12.0+ 为输入图像中的人生成轮廓图
Image Sequence Analysis Generate Person Instance Mask 17.0+ 14.0+ 为输入图像中的人生成实例掩码
Image Sequence Analysis Detect Document Segmentation 15.0+ 12.0+ 检测输入图像中的文本区域
Saliency Analysis Generate Attention Based Saliency Image 13.0+ 10.15+ 生成注意力引导的热图
Saliency Analysis Generate Objectness Based Saliency Image 13.0+ 10.15+ 生成对象引导的热图
Object Tracking Track Rectangle ⚠️ *11.0+ *10.13+ 跟踪矩形对象
Object Tracking Track Object ⚠️ *11.0+ *10.13+ 跟踪对象
Rectangle Detection Detect Rectangle *11.0+ *10.13+ 在图像中检测矩形区域
Face and Body Detection Detect Face Capture Quality 13.0+ 10.15+ 检测照片中面部的捕获质量
Face and Body Detection Detect Face Landmarks *11.0+ *10.13+ 检测图像中的人脸特征
Face and Body Detection Detect Face Rectangles *11.0+ *10.13+ 检测图像中的人脸
Face and Body Detection Detect Human Rectangles 13.0+ 10.15+ 检测包含人的矩形区域
Body and Hand Pose Detection Detect Human Body Pose 14.0+ 11.0+ 检测人体姿势
Body and Hand Pose Detection Detect Human Hand Pose 14.0+ 11.0+ 检测人体手部姿势
3D Body Pose Detection Detect Human Body Pose 3D 17.0+ 14.0+ 检测三维空间中的人体姿势
Animal Detection Recognize Animals 13.0+ 10.15+ 检测图像中的动物(目前仅支持猫和狗)
Animal Body Pose Detection Detect Animal Body Pose 17.0+ 14.0+ 检测动物的身体姿势
Trajectory Detection Detect Trajectories 14.0+ 11.0+ 检测沿抛物线路径移动的形状轨迹
Contour Detection Detect Contours 14.0+ 11.0+ 检测图像边缘的轮廓
Optical Flow Generate Optical Flow 14.0+ 11.0+ 为图像中的每个像素生成方向变化矢量
Optical Flow Track Optical Flow 17.0+ 14.0+ 从先前到当前图像确定矢量的方向变化
Barcode Detection Detect Barcodes *11.0+ *10.13+ 检测图像中的条形码
Text Detection Detect Text Rectangles *11.0+ *10.13+ 检测图像中的文本区域
Text Recognition Recognize Text 13.0+ 10.15+ 检测并识别图像中的文本
Horizon Detection Detect Horizon *11.0+ *10.13+ 确定图像中的地平线角度
Image Alignment Translational Image Registration *11.0+ *10.13+ 确定两个图像内容对齐所需的仿射变换
Image Alignment Track Translational Image Registration 17.0+ 14.0+ 作为状态请求跟踪时间确定两个图像内容对齐所需的仿射变换
Image Alignment Homographic Image Registration *11.0+ *10.13+ 确定两个图像内容对齐所需的透视扭曲矩阵
Image Alignment Track Homographic Image Registration 17.0+ 14.0+ 作为状态请求跟踪时间确定两个图像内容对齐所需的透视扭曲矩阵
Image Background Removal Generate Foreground Instance Mask 17.0+ 14.0+ 生成显眼对象的实例掩码以分离背景

重要提示

如果有任何需求,请提交 issue

安装 📦

pubspec.yaml 文件中添加以下内容:

dependencies:
  unified_apple_vision: ^latest

使用 🕹

import 'package:unified_apple_vision/unified_apple_vision.dart';

// 初始化
final vision = UnifiedAppleVision();

// 创建输入图像
final input = VisionInputImage(
  bytes: image.bytes,
  size: image.size,
);

// 分析
vision.analyze(
  image: input,
  requests: [
    // 添加要执行的请求
    VisionRecognizeTextRequest(
      onResults: (results) {
        final observations = results.ofRecognizeTextRequest; // 获取结果
        // 执行某些操作
      },
      onError: (error) {
        // 处理错误
      },
    ),
  ],
);

文档 📘

详细文档可以在 GitHub 上查看。

贡献 🤝

欢迎贡献!请随时提交 Pull Request。

添加新请求或观察

如果要添加新的请求或观察类,可以使用 tools.py 脚本自动生成样板代码。

python3 tools.py request --name VNDetectRectanglesRequest --ios 11.0 --macos 10.13
python3 tools.py observation --name VNRectangleObservation --extends VNDetectedObjectObservation

更多关于Flutter苹果视觉功能集成插件unified_apple_vision的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter苹果视觉功能集成插件unified_apple_vision的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter中集成和使用unified_apple_vision插件来实现苹果视觉功能的代码案例。这个插件允许你利用苹果设备上的Vision框架来进行图像分析和处理。

首先,确保你已经在pubspec.yaml文件中添加了unified_apple_vision依赖:

dependencies:
  flutter:
    sdk: flutter
  unified_apple_vision: ^0.x.x  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来是一个简单的Flutter应用示例,演示如何使用unified_apple_vision插件来检测图像中的人脸:

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:unified_apple_vision/unified_apple_vision.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Apple Vision Demo',
      home: VisionDemoPage(),
    );
  }
}

class VisionDemoPage extends StatefulWidget {
  @override
  _VisionDemoPageState createState() => _VisionDemoPageState();
}

class _VisionDemoPageState extends State<VisionDemoPage> {
  File? _imageFile;
  List<FaceFeature> _faces = [];

  Future<void> _pickImage() async {
    final picker = ImagePicker();
    final pickedFile = await picker.pickImage(source: ImageSource.camera);

    if (pickedFile != null) {
      setState(() {
        _imageFile = File(pickedFile.path);
      });

      _detectFaces();
    }
  }

  Future<void> _detectFaces() async {
    if (_imageFile != null) {
      final appleVision = UnifiedAppleVision();
      final result = await appleVision.detectFaces(_imageFile!);

      setState(() {
        _faces = result;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Apple Vision Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            _imageFile == null
                ? Text('No image selected.')
                : Image.file(_imageFile!),
            SizedBox(height: 20),
            _faces.isNotEmpty
                ? Text('Detected ${_faces.length} face(s).')
                : Text('No faces detected.'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _pickImage,
              child: Text('Pick Image'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 使用image_picker插件来选择或拍摄一张图片。
  2. 使用unified_apple_vision插件来检测图片中的人脸。
  3. 显示选中的图片和检测到的人脸数量。

请注意,unified_apple_vision插件的API可能会随着版本更新而变化,因此请查阅最新的文档以获取最准确的API信息和用法。

此外,由于unified_apple_vision是一个平台特定的插件,它只能在iOS设备上运行。如果你尝试在Android设备上运行此代码,它将不会工作。确保在iOS模拟器或实际iOS设备上进行测试。

回到顶部