🔥作者主页:疯狂行者🔥 💖✌java领域优质创作者,专注于Java技术领域技术交流✌💖
💖文末获取源码💖
精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻Java精彩实战项目案例
Java精彩新手项目案例
Python精彩新手项目案例
文章目录
前言
本次文章主要是介绍,大学生毕设神器 | 田径运动自动技术系统的开发 基于OpenCV识别田径运动计数
一、系统功能
1.1 开发环境
- 开发语言:python - 技术:OpenCV
二、系统分析
2.1 需求分析
在田径运动自动技术系统中,用户是唯一的角色。用户需要完成登录注册、运动计数和查询等功能。具体来说,用户可以通过登录注册功能进行账号注册和登录操作;可以通过运动计数功能选择运动视频、选择运动类型,提交计数等操作,完成对某类运动的自动化识别和计数;可以通过查询功能查看最近记录和全部记录,方便用户进行数据的查看和管理。通过以上的功能模块,用户可以方便地进行田径运动的自动化处理和数据管理,从而提高运动的效率和质量。此系统详细功能模块分析如下所示:
(1)登录注册功能模块:该功能模块主要用于用户的账号注册和登录操作。用户可以通过注册功能进行账号注册,填写学号、姓名和性别,注册成功后可以使用该账号进行登录操作。登录功能需要输入正确的学号才能成功,登录成功后可以访问系统的其他功能模块。
(2)运动计数功能模块:该功能模块主要用于对某类运动进行自动化识别和计数。用户可以选择运动视频,并选择对应的运动类型,系统将自动对视频进行分析和处理,提取出运动数据和特征,并进行计数统计,在此模块中运动类型目前只提供了三种,包含引体向上、深蹲、俯卧撑。用户可以提交计数结果,系统将保存计数数据,方便用户进行后续的数据分析和管理。
(3)查询功能模块:该功能模块主要用于用户查询最近记录和全部记录。用户可以通过查询功能查看自己最近的计数记录和所有计数记录,可以进行数据的筛选和查看,方便用户进行数据的管理和分析。
2.2 架构设计
田径运动自动技术系统的设计架构主要分为前端、后端和数据库三个部分。
前端部分采用PyQt5库进行设计,实现了用户界面和交互操作。在前端部分中,系统包含了登录注册界面、选择运动视频界面、选择运动类型界面、提交计数结果界面和查询最近记录和全部记录界面等功能模块。在这些模块中,用户可以通过简单的操作来实现对系统的管理和控制。
后端部分采用Django库进行设计,实现了数据的处理和逻辑控制。在后端部分中,系统包含了多个视图函数和模型,用于处理用户的请求和返回相应的数据。例如,系统需要对用户提交的计数结果进行处理和统计,需要对用户查询的最近记录和全部记录进行查询和返回等。
数据库部分采用MySQL数据库进行设计,实现了数据的存储和管理。在数据库部分中,系统需要定义多个表,例如用户信息表、运动计数表等,用于存储和管理用户提交的数据和系统运行的数据。
2.3 运动识别计数流程设计
田径运动自动技术系统的业务流程主要分为登录注册、运动计数模式和查询模式三个环节。首先是登录注册环节,用户需要进行账号注册和登录,系统需要进行用户身份认证和密码加密传输,确保用户数据的安全和保密。其次是运动计数模式环节,用户需要选择运动视频和运动类型,通过计数结果提交表单来进行运动计数。系统需要对用户提交的数据进行处理和统计,并将计数结果存储到数据库中。最后是查询模式环节,用户可以查询最近记录和全部记录,查看历史计数结果和相关信息。系统需要从数据库中查询相应的数据,并将结果返回给用户。整个业务流程的环节相互配合,用户可以方便地进行账号管理、运动计数和数据查询。该系统的业务流程设计简单、直观,易于操作和管理
三、部分功能展示
☀️注册页面展示☀️
☀️登录展示☀️
☀️计数展示☀️
☀️可视化展示☀️
四、部分代码设计
4.1.上传视频【代码如下(示例):】
def file(self, selectwindow): filename = QtWidgets.QFileDialog.getOpenFileNames(selectwindow, '选择视频', os.getcwd(), "mp4 Files(*.mp4);;avi Files(*.avi)") # 输出文件,查看文件路径 # print(filename) # 根据输出结果选取对应的文件名 if filename[0]: self.outname = filename[0][0] self.filename.setText(filename[0][0]) else: self.filename.setPlaceholderText("请选择mp4或avi格式的视频")
4.2.注册【代码如下(示例):】
def registerBtn(self, registerwindow, indexwindow): uid = self.lineEdit.text() # 学号 id_list = [n[0] for n in session.query(User.uid).all()] if uid in id_list: # 检查数据库中是否存在该学生 QtWidgets.QMessageBox.warning(registerwindow, '错误', f"学号{uid}已被注册!", QtWidgets.QMessageBox.Yes) return uname = self.lineEdit_4.text() # 获取输入的用户名 sex = self.comboBox.currentText() user = User(uid=uid, uname=uname, sex=sex) # 创建用户对象 session.add(user) # 添加到session session.commit() # 提交到数据库 registerwindow.close()
4.3.登录【代码如下(示例):】
def loginBtn(self, loginwindow): uid = self.lineEdit.text() id_list = [n[0] for n in session.query(User.uid).all()] if uid not in id_list: QtWidgets.QMessageBox.warning(loginwindow, '错误', f"没有找到学号为'{uid}'的用户", QtWidgets.QMessageBox.Yes) return self.lineEdit.clear() loginwindow.close()
总结
源码获取:
大家点赞、收藏、关注、评论啦 、
打卡 文章 更新 104/ 365天
精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻
Java精彩实战项目案例
Java精彩新手项目案例
Python精彩新手项目案例