瑜伽大师

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

Yoga-Guruv

入门

第一步:克隆项目仓库

打开终端并输入

git clone https://github.com/adityaas26/Yoga-Guru.git

第二步:运行应用

连接您的设备或启动模拟器并运行以下代码

# change directories
cd Yoga-Guru

# run the app
flutter run

项目结构

目前项目结构相当基础。

yoga-guru-project-struct

让我们看看lib文件夹

yoga-guru-project-struct-1

别担心,我们马上就会简要回顾所有文件!让我们从**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**的按钮。

HomePage--1-

4. home.dart

**home.dart**定义了一个名为Home的类,它是一个无状态小部件。它包含按钮,这些按钮根据用户按下的按钮将用户路由到**poses.dart**。每个按钮(初级、中级、高级)都调用_onPoseSelect()方法。

这个_onPoseSelect()方法非常重要,因为它传递给该函数的可选参数决定了在poses页面上显示哪个姿势列表。

BeginnerPage

5. poses.dart

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

Inference

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)并在屏幕上绘制关键点。它还以百分比打印模型的准确性。

ProfilePage

9. profile.dart

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

GitHub

https://github.com/BetaPundit/Yoga-Guru