瑜伽大师
Yoga Guru 是您基于 Flutter 的个性化瑜伽教练应用程序。它使用 posenet,一个预训练的深度学习模型,来实时估计身体姿势并预测瑜伽体式。

入门
第一步:克隆项目仓库
打开终端并输入
git clone https://github.com/adityaas26/Yoga-Guru.git
第二步:运行应用
连接您的设备或启动模拟器并运行以下代码
# change directories
cd Yoga-Guru
# run the app
flutter run
项目结构
目前项目结构相当基础。

让我们看看lib文件夹

别担心,我们马上就会简要回顾所有文件!让我们从**main.dart**开始
1. main.dart
**main.dart**从共享偏好设置和相机模块加载数据。它还为**home**、**login**和**register**页面定义了路由。如果用户已登录,它会将初始路由设置为**home.dart**,否则设置为**login.dart**。
2. login.dart
**login.dart**定义了一个名为Login的类,它是一个有状态小部件。它包含登录应用程序所需的文本字段。Login按钮调用_login()方法,该方法路由到**home.dart**。它还包含一个将用户发送到**register.dart**的按钮。
3. register.dart
**register.dart**定义了一个名为Register的类,它是一个有状态小部件。它包含登录应用程序所需的文本字段。Login按钮调用_register()方法,该方法路由到**home.dart**。它还包含一个将用户发送到**login.dart**的按钮。

4. home.dart
**home.dart**定义了一个名为Home的类,它是一个无状态小部件。它包含按钮,这些按钮根据用户按下的按钮将用户路由到**poses.dart**。每个按钮(初级、中级、高级)都调用_onPoseSelect()方法。
这个_onPoseSelect()方法非常重要,因为它传递给该函数的可选参数决定了在poses页面上显示哪个姿势列表。

5. poses.dart
**poses.dart**定义了一个名为Poses的类,它是一个无状态小部件。它将可用姿势列表显示为可滑动的卡片。自定义卡片的代码可以在**yoga_card.dart**文件中找到。每张卡片都是可点击的,并调用_onSelect()方法,该方法将用户导向InferencePage(**inference.dart**)。

6. inference.dart
**inference.dart**定义了一个名为InferencePage的类,它是一个有状态小部件。它是加载posenet模型的类。它使用相机实例和_setRecognitions()回调函数初始化相机对象。_setRecognitions()方法负责将PoseNet模型的预测输出保存到列表(_recognitions)中。然后将此预测值列表(_recognitions)传递给**BndBox**的构造函数。
您可以在此处阅读有关实现的更多信息。
7. camera.dart
**camera.dart**定义了一个名为Camera的类,它是一个有状态小部件。它包含与相机初始化相关的代码,并通过将当前CameraImage作为参数传递来调用Tflite.runPoseNetOnFrame()方法。该方法的输出(预测)作为参数传递给_setRecognitions()方法,该方法已作为回调传递给Camera()。
8. bndbox.dart
**bndbox.dart**定义了一个名为BndBox的类,它是一个无状态小部件。它接收预测列表(_recognitions)并在屏幕上绘制关键点。它还以百分比打印模型的准确性。

9. profile.dart
**profile.dart**定义了一个名为Profile的类,它是一个有状态小部件。它包含查看和更新用户个人资料数据的代码。