视觉分析(模拟)app
This commit is contained in:
280
README.md
Normal file
280
README.md
Normal file
@@ -0,0 +1,280 @@
|
||||
# 自动拍照与图像分析应用
|
||||
|
||||
一个使用 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 SDK(API 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、桌面平台
|
||||
- ✅ 完善的权限管理
|
||||
- ✅ 友好的用户界面
|
||||
Reference in New Issue
Block a user