Files
sight-identification/README.md

281 lines
7.5 KiB
Markdown
Raw Normal View History

2026-01-07 16:14:34 +08:00
# 自动拍照与图像分析应用
一个使用 Flutter 开发的跨平台应用,实现持续拍照和 YOLO 图像分析功能。
## 功能特点
- 📸 **持续拍照** - 点击开始后每2秒自动拍摄一张照片直到点击停止按钮
- 🖼️ **保存到相册** - 自动将拍摄的照片保存到设备相册
- 🤖 **YOLO 图像分析** - 对拍摄的照片进行 YOLO 目标检测分析
- 📊 **结果展示** - 在结果页面查看所有照片和分析结果
- 🎨 **简洁界面** - 美观的欢迎界面、相机界面和结果展示界面
- 📱 **跨平台支持** - 支持 Android、iOS、Web 和桌面平台
## 技术栈
- **Flutter** - 跨平台UI框架
- **camera** ^0.11.3 - 相机功能
- **image_picker** ^1.0.7 - 图片选择Web/桌面平台)
- **gal** ^2.0.1 - 保存图片到相册
- **permission_handler** ^12.0.1 - 权限管理
- **http** ^1.1.0 - HTTP 请求YOLO API 调用)
- **path_provider** ^2.1.1 - 路径管理
## 安装步骤
### 前置要求
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- Android Studio 或 VS Code推荐安装 Flutter 和 Dart 插件)
- Android SDKAPI Level 21+
- 一台 Android 设备或模拟器(推荐在真实设备上测试)
### 1. 克隆项目
```bash
git clone <repository-url>
cd view-app
```
### 2. 安装依赖
```bash
flutter pub get
```
### 3. 运行应用
#### 在 Android 设备上运行(推荐)
1. 启用设备的 USB 调试
2. 连接设备到电脑
3. 运行:
```bash
flutter run
```
或者指定设备:
```bash
flutter devices # 查看可用设备
flutter run -d "设备名称"
```
#### 在 Android 模拟器上运行
1. 启动 Android 模拟器
2. 运行:
```bash
flutter run
```
#### 在 Web 浏览器中运行
```bash
flutter run -d chrome
```
**注意**Web 平台不支持自动连续拍照功能,需要使用 Android 或 iOS 设备。
## 项目结构
```
view-app/
├── lib/
│ ├── main.dart # 应用入口
│ ├── screens/
│ │ ├── welcome_screen.dart # 欢迎界面
│ │ ├── camera_screen.dart # 相机界面(持续拍照)
│ │ └── result_screen.dart # 结果展示页面
│ └── services/
│ └── yolo_service.dart # YOLO 图像分析服务
├── android/ # Android 平台代码
├── ios/ # iOS 平台代码
├── web/ # Web 平台代码
├── windows/ # Windows 平台代码
├── linux/ # Linux 平台代码
├── macos/ # macOS 平台代码
├── pubspec.yaml # 依赖配置
└── README.md # 项目说明
```
## 使用流程
1. **启动应用**:打开应用,进入欢迎界面
2. **开始拍照**:点击"开始拍照"按钮
3. **授予权限**:首次使用会请求相机和存储权限,请允许
4. **打开相机**:相机预览界面打开
5. **开始拍摄**:点击"开始拍照"按钮应用会每2秒自动拍摄一张照片
6. **查看进度**:顶部显示已拍摄的照片数量
7. **停止拍摄**:点击"停止拍照"按钮
8. **图像分析**:应用自动对拍摄的照片进行 YOLO 分析(显示分析中对话框)
9. **查看结果**:在结果页面查看所有照片和对应的分析结果
10. **完成**:点击"完成"按钮返回欢迎界面
## 功能说明
### 持续拍照
- 点击"开始拍照"后,应用会立即拍摄第一张照片
- 然后每2秒自动拍摄一张直到点击"停止拍照"按钮
- 所有照片自动保存到设备相册移动平台或下载目录Web/桌面平台)
### YOLO 图像分析
应用会对本次拍摄的所有照片进行 YOLO 目标检测分析:
1. **API 配置**:在 `lib/services/yolo_service.dart` 中配置 YOLO API 端点
```dart
static const String yoloApiUrl = 'http://your-yolo-api-url/api/detect';
```
2. **API 格式**
- 请求POST multipart/form-data字段名为 `image`
- 响应JSON 格式,包含检测到的物体列表
3. **模拟数据**:如果 YOLO API 不可用,应用会使用模拟数据进行测试
### 结果展示
- 显示所有拍摄的照片
- 每张照片下方显示对应的分析结果
- 包括检测到的物体名称和置信度
- 支持滚动查看所有结果
## 权限说明
应用需要以下权限:
- **相机权限** (`CAMERA`) - 用于拍摄照片
- **存储权限** - 用于保存照片到相册
- Android 12 及以下:`READ_EXTERNAL_STORAGE`, `WRITE_EXTERNAL_STORAGE` (maxSdkVersion: 32)
- Android 13+`READ_MEDIA_IMAGES`
权限会在首次使用时自动请求。如果拒绝权限,应用可能无法正常工作。
## 配置说明
### 修改拍照间隔
`lib/screens/camera_screen.dart` 中修改:
```dart
_timer = Timer.periodic(const Duration(seconds: 2), (timer) async {
// 修改 Duration(seconds: 2) 中的数字
});
```
### 修改相机分辨率
`lib/screens/camera_screen.dart` 中修改:
```dart
_controller = CameraController(
_cameras![0],
ResolutionPreset.high, // 可选: low, medium, high, veryHigh, ultraHigh, max
enableAudio: false,
);
```
### 配置 YOLO API
`lib/services/yolo_service.dart` 中修改:
```dart
static const String yoloApiUrl = 'http://your-api-url/api/detect';
```
## 开发说明
### 主要功能实现
- **持续拍照逻辑**:使用 `Timer.periodic` 实现定时拍照,通过状态控制启停
- **照片保存**:使用 `gal` 包(移动平台)或 `path_provider`Web/桌面平台)保存照片
- **权限管理**:使用 `permission_handler` 请求和检查权限
- **状态管理**:使用 `StatefulWidget` 管理拍照状态和照片列表
- **YOLO 分析**:使用 `http` 包调用 YOLO API支持批量分析
### 平台差异
- **移动平台Android/iOS**:使用 `camera` 包实现相机预览和自动拍照
- **Web/桌面平台**:使用 `image_picker` 包,但只能手动拍照(不支持自动连续拍照)
## 常见问题
### Q: 拍照后照片没有保存到相册?
A: 检查是否授予了存储/照片权限。可以在设备设置中手动授予权限。
### Q: 相机无法打开?
A: 确保已授予相机权限,并检查设备是否有可用的相机。
### Q: YOLO 分析失败?
A: 检查 YOLO API 配置是否正确,以及网络连接是否正常。如果 API 不可用,应用会使用模拟数据。
### Q: Web 平台无法使用自动拍照功能?
A: Web 平台不支持 `camera` 包的自动连续拍照功能,这是浏览器安全限制。请在 Android 或 iOS 设备上使用。
### Q: 应用崩溃?
A: 检查 Flutter 和依赖包的版本是否兼容,运行 `flutter doctor` 检查环境。
## 构建发布版本
### Android
```bash
flutter build apk --release
```
或者构建 App Bundle用于 Google Play
```bash
flutter build appbundle --release
```
### iOS
```bash
flutter build ios --release
```
### Web
```bash
flutter build web --release
```
## 版本信息
- **Flutter SDK**: >=3.0.0
- **Dart SDK**: >=3.0.0
- **Android Gradle Plugin**: 8.9.1
- **Gradle**: 8.11.1
- **Kotlin**: 2.1.0
## 许可证
MIT License
## 贡献
欢迎提交 Issue 和 Pull Request
## 更新日志
### v1.0.0 (当前版本)
- ✅ 实现持续拍照功能每2秒拍摄直到点击停止
- ✅ 照片自动保存到相册
- ✅ 集成 YOLO 图像分析功能
- ✅ 结果展示页面
- ✅ 支持 Android、iOS、Web、桌面平台
- ✅ 完善的权限管理
- ✅ 友好的用户界面