我给自己写了个坐姿检测软件,治好了我的脖子前倾
事情是这样的。
前阵子去医院拍了个片子,医生说我的颈椎曲度已经有点前伸了。问我是不是天天低着头看电脑。我说是啊,干我们这行的,一天十几个小时盯着屏幕,不低头才怪。
医生说你再这么下去,后面就不是脖子酸的问题了。
回来之后我确实注意了一段时间,但你知道的,写着写着代码,人就不知不觉凑到屏幕前面去了。等反应过来,脖子已经伸出去老远。
买过那种挂在脖子后面的姿势提醒器,也买过脖圈,但是那种东西始终是外物,肌肉没建立起来也只是亡羊补牢,算了,自己动手嘛。
后来我琢磨,既然我天天对着电脑,不如写个软件来盯着我。
花了两天时间,搞了个桌面应用。原理不复杂——调用摄像头,实时检测你的头部姿态。你正常坐着的时候,软件会记下这个基准位置。一旦你开始低头、脖子往前伸、或者歪着头看屏幕,它就会提醒你。
用起来很简单:
- 找个摄像头,笔记本自带的也行
- 启动软件,正对着坐好
- 软件会显示你当前的头部位姿,你根据自己舒服的正常坐姿,调整一下阈值
- 完事。之后只要你姿势跑偏,它就会报警
目前支持三种姿势问题的检测:
- 低头(角度过大)
- 脖子前倾(头部偏离基准太远)
- 偏头(左右歪头)
底层用的是Python,调了OpenCV和MediaPipe的人脸关键点检测。准确率还不错,只要光线正常、摄像头角度合适,基本不会误报。
其实写完之后我自己用了一周,发现最大的改变不是被提醒的时候,而是“知道有人在看着我”的那种感觉。有点像开高速的时候开了车道保持,你明知道它不会把你怎么样,但你就是会下意识地好好握着方向盘。
代码我放GitHub上了,开源免费的,有需要的直接拿去用。
GitHub地址:https://gitee.com/jie_huang/sitting-posture-reminder
环境要求:Python 3.12,装了opencv-python和mediapipe就行。
运行命令:(取决于自己的环境)
D:\project\pose_detection\.venv\Scripts\python.exe C:\Users\Admin\Desktop\坐姿提醒\pose_detection_tk.py
MediaPipe的模型文件已经包含,直接运行就好。
注意:mediapipe分为新版和旧版,这里采用的是新版API
另外说一句,这软件不能代替医生的建议。如果你已经腰疼脖子疼了,该去看医生看医生。它只是一个帮你养成习惯的工具。
写完这个之后,我现在写代码时脖子确实没那么往前伸了。不知道是软件的作用,还是因为我花了两周时间写它,心理上觉得不用就亏了。
可能是后者吧。但效果到了就行。
运行截图