Flutter苹果视觉功能集成插件unified_apple_vision的使用
Flutter 苹果视觉功能集成插件 unified_apple_vision 的使用
unified_apple_vision 🍎
此插件用于在 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
更多关于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'),
),
],
),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 使用
image_picker
插件来选择或拍摄一张图片。 - 使用
unified_apple_vision
插件来检测图片中的人脸。 - 显示选中的图片和检测到的人脸数量。
请注意,unified_apple_vision
插件的API可能会随着版本更新而变化,因此请查阅最新的文档以获取最准确的API信息和用法。
此外,由于unified_apple_vision
是一个平台特定的插件,它只能在iOS设备上运行。如果你尝试在Android设备上运行此代码,它将不会工作。确保在iOS模拟器或实际iOS设备上进行测试。