野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 787|回复: 4

[经验\资料] 野火【鲁班猫】卡片创意氛围赛(第二期)+坐姿识别检测装置

[复制链接]
发表于 2023-11-27 00:06:49 | 显示全部楼层 |阅读模式
本帖最后由 小默叔叔 于 2023-11-27 09:42 编辑

一、项目介绍
1. 背景介绍   
作为一个嵌软点灯工程师,每天会有很长的一段时间坐在电脑前学习怎么点灯,时间久了,腰也自然而然就突出了。所以在腰突之后,就想有个提示自己坐姿和坐了多久的上位机软件跑在自己的电脑上,按时提示自己要站起来喝点水去厕所溜达一圈了。   
也因为如此,就放弃之前想做创意:把鲁班猫作为游戏机,玩游戏的这个想法(而且发现创意赛一期有人弄了,那就没什么新意了)   
还没说项目是什么:   
简单说就是:USB摄像头实时录像,并传给LubanCat-2N,鲁班猫同时解析视频,并分析坐姿是否符合预期,并在终端串口输出运行日志,在个人PC上跑了一个上位机,直接获取LubanCat-2N的终端日志,做关键字提取,并在上位机上显示此时人的坐姿状态是否符合预期,不符合的话,就做警告提示,还增加了番茄时钟,用来提醒自己的工作时长,没事多喝点水,降低尿酸和结石风险。   
以上都是我的碎碎念!
2. 项目框架项目框架很简单,分为硬件框图和软件框图,如下图所示:
硬件框图:
主要分为:摄像头、鲁班猫2.网络版、个人PC
            Untitled.png
软件框图:
主要分为:运行依赖库的关系
            Untitled 1.png
3. 硬件介绍
  • 摄像头
    摄像头用的是之前一个活动测评项目赠送的普通USB摄像头,型号是海康的DS-E11 USB 摄像头,USB 2.0接口,720P高清输出,视频帧率:MJPG (640x480 @30/25 fps )和YUV(640x480 @30 fps )等
  • 鲁班猫2.网络版
    • LubanCat-2N使用了一颗包含四核Cortex-A55处理器、Mali G52 2EE图形处理器和高能效NPU的SOC, 四网口的设计、可以充分发挥处理器的网络性能,同时引出USB、MINI PCI-E等通用接口,即可作为软路由使用, 也可作为文件存储服务器,小型WEB服务器使用。
    • 硬件资源图
      Untitled 2.png
    • 硬件资源表
      Untitled 3.png
4. 软件介绍
  • Mediapipe
    MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 、Google Lens、ARCore、Google Home 以及 ,都已深度整合MediaPipe。
    作为一款跨平台框架,MediaPipe 不仅可以被部署在服务器端,更可以在多个移动端 (安卓和苹果 iOS)和嵌入式平台(Google Coral 和树莓派)中作为设备端机器学习推理 (On-device Machine Learning Inference)框架。
  • OpenCV
    OpenCV(open source computer vision library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易于上手,让开发人员更多的精力花在算法的设计上。
二、方案实现
1. 终端显示上位机开发
          Untitled 4.png
  • 开发环境和依赖: PyQt5 + Pycharm + Qt Designer + PyUIC
  • 开发流程:
    • 使用Qt Designer 设计UI和布局,生成 xx.ui 文件
    • 使用PyUIC把 xx.ui 文件转换成 windows.py 文件
    • 编写mian.py文件,实现上位机代码逻辑,并调用windows.py文件,实现UI界面显示
  • 实现的主要功能有:
    • 串口通讯,读取LubanCat-2N的终端串口数据,并做数据过滤和处理,对应UI界面有,串口开启和关闭时不同状态显示,以及串口端口号的选择处理。
    • 判断串口终端的数据是否有关于例如“低头”、“上半身后倾”、“上半身前倾”、“姿势正常”等关键词,对应UI操作,就是姿势正常,对应图标为绿色,姿势不对,图标为红色
    • 番茄时钟,可以设置开启、暂停和重置的过程
    • 显示当前时间和星期几
  • 代码目录:
    Untitled 5.png
  • main.py 关键代码如下
    野火论坛202311270014097337..png 野火论坛202311270015083132..png 野火论坛202311270015494313..png 野火论坛202311270016119235..png
2. 姿势识别的功能开发(缺乏自我管理的体重)
          Untitled 6.png
  • 开发的主要依赖和工具有:python+vscode+opencv+mediapipe
  • 主要思路:
    • 使用cv2开启摄像头,并获取视频流
    • 运行mediapipe通过视频流做识别
    • 绘制关键点的位置,并在输出视频上标注出来
    • 根据需求,判断比如低头、上半身前后倾的情况,并在串口终端打印出来对应关键字例如“低头”、“上半身后倾”、“上半身前倾”、“姿势正常”等
  • 代码目录:
    Untitled 7.png
  • 关键代码,摄像头测试+获取两肩的中点的方法(因为Mediapipe没有对这个位置做标注)

       野火论坛202311270013184264..png
3. 硬件连接
  • 这里没有什么好说的, 查看上面“项目框架”→”硬件框图“
三、功能展示
1. 上位机展示
       Untitled 8.png
2. 姿势识别展示
  • 正面识别展示(视频里展示的是侧面,这个正面是当时调试的截屏)
    Untitled 9.png
3. 联动上位机提示展示四、总结这次很厚颜的问火哥申请了一块鲁班猫LubanCat-2N开发板来参加比赛。所以写这篇的时候,一直说的鲁班猫、鲁班猫、鲁班猫,而不是RK3568,希望后续大家在网上搜到的更多的是鲁班猫,也算是做了一点点的宣传,吃水不忘挖井人吧。
demo其实在10月底就做好了,然后开始忙着找工作、上班、加班,就没有写总结、录视频和按要求提交这些内容,最后也算在生日这天把这个项目的思路整理写完了,算是先画个句号吧,所以也有点感性。
这个东西还有很多优化思路,比如,增加人脸识别和用户管理,只有我和我录入人脸信息的人可以使用这个软件;再比如,我现在为了编程方便,其实识别的都是身体的侧面,其实可以修改下配置,识别正面,对应的判断策略也要调整;再再比如,可以做成一个多肉植物的花盆,再增加压力传感器,除了可以识别我的坐姿,还可以判断我一天的饮水量,避免久坐、尿酸高和结石的一些问题。
生活可能不太有趣,但我们要想办法做一个有趣的人,当只有自己一个人的时候,最起码还可以取悦自己。我还想学电机开发,虽然工作用不到,但也想学学,即使做不到精通,但也知道个大概,也是很赞的!




回复

使用道具 举报

发表于 2023-11-27 08:39:24 | 显示全部楼层
真不错   
回复 支持 反对

使用道具 举报

发表于 2023-12-8 20:32:41 | 显示全部楼层
大佬QAQ代码开源吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-9 08:50:37 | 显示全部楼层
BYSH 发表于 2023-12-8 20:32
大佬QAQ代码开源吗

可以呀~ 等评审完,我就放出来吧~
回复 支持 反对

使用道具 举报

发表于 2024-4-28 16:32:45 | 显示全部楼层
看着有点卡,有没有能够提高速度的办法?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-7 05:05 , Processed in 0.081275 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表