news 2026/5/25 16:56:08

python,食指操作翻页

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python,食指操作翻页

<<< 向左挥动: 后退
<<< 向左挥动: 后退
<<< 向左挥动: 后退

向右挥动: 前进
<<< 向左挥动: 后退
<<< 向左挥动: 后退
<<< 向左挥动: 后退
<<< 向左挥动: 后退
<<< 向左挥动: 后退
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
<<< 向左挥动: 后退
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
向右挥动: 前进
<<< 向左挥动: 后退
<<< 向左挥动: 后退

importcv2importmediapipeasmpimportpyautoguiimporttimeimportmath# ================= 配置区域 =================# 动作灵敏度 (0.05 - 0.2 之间,越小越灵敏)SWIPE_THRESHOLD=0.10# 两次动作之间的冷却时间 (秒),防止一次挥动触发多次翻页COOLDOWN_TIME=1.0# 浏览器快捷键映射KEY_BACK=['alt','left']# Chrome 后退 (上一页)KEY_FORWARD=['alt','right']# Chrome 前进 (下一页)# ===========================================classHandController:def__init__(self):# 初始化 MediaPipe Handsself.mp_hands=mp.solutions.hands self.hands=self.mp_hands.Hands(max_num_hands=1,min_detection_confidence=0.7,min_tracking_confidence=0.7)self.mp_draw=mp.solutions.drawing_utils# 状态变量self.prev_x=None# 上一帧的食指尖 X 坐标self.last_action_time=0# 上次触发动作的时间self.action_text=""# 屏幕上显示的提示文字self.action_display_timer=0# 文字显示计时器defdetect_gesture(self,landmarks):""" 检测挥动手势 landmarks: 手部关键点列表 """current_time=time.time()# 获取食指指尖 (关键点 8) 的 X 坐标 (范围 0.0 - 1.0)# 0.0 是屏幕左侧,1.0 是屏幕右侧index_finger_tip=landmarks.landmark[8]curr_x=index_finger_tip.x# 如果还在冷却时间内,只更新坐标,不触发动作ifcurrent_time-self.last_action_time<COOLDOWN_TIME:self.prev_x=curr_xreturnifself.prev_xisnotNone:# 计算移动距离diff_x=curr_x-self.prev_x# 判断移动幅度和方向# 向右挥动 (diff_x > 0) -> 前进ifdiff_x>SWIPE_THRESHOLD:print(">>> 向右挥动: 前进")pyautogui.hotkey(*KEY_FORWARD)self.last_action_time=current_time self.action_text="Next Page >"self.action_display_timer=30# 显示约1秒(30帧)# 向左挥动 (diff_x < 0) -> 后退elifdiff_x<-SWIPE_THRESHOLD:print("<<< 向左挥动: 后退")pyautogui.hotkey(*KEY_BACK)self.last_action_time=current_time self.action_text="< Previous Page"self.action_display_timer=30# 更新上一帧坐标self.prev_x=curr_xdefstart(self):# 打开摄像头cap=cv2.VideoCapture(0)# 设置分辨率 (降低分辨率可以提高处理速度)cap.set(3,640)cap.set(4,480)print("程序已启动!请将焦点切换到 Google Chrome 浏览器。")print("操作说明: 食指快速向左挥动 -> 后退,向右挥动 -> 前进")print("按 'q' 键退出程序")whileTrue:success,img=cap.read()ifnotsuccess:break# 1. 镜像翻转图像 (让画面看起来像照镜子,符合直觉)img=cv2.flip(img,1)# 2. 转换颜色空间 BGR -> RGBimg_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)# 3. 处理手部检测results=self.hands.process(img_rgb)ifresults.multi_hand_landmarks:forhand_lmsinresults.multi_hand_landmarks:# 绘制手部骨架self.mp_draw.draw_landmarks(img,hand_lms,self.mp_hands.HAND_CONNECTIONS)# 检测手势self.detect_gesture(hand_lms)else:# 如果没检测到手,重置位置,防止手重新出现时误判self.prev_x=None# 4. 在屏幕上显示反馈文字ifself.action_display_timer>0:cv2.putText(img,self.action_text,(50,50),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),3)self.action_display_timer-=1# 显示冷却状态iftime.time()-self.last_action_time<COOLDOWN_TIME:cv2.circle(img,(30,30),10,(0,0,255),-1)# 红点表示冷却中else:cv2.circle(img,(30,30),10,(0,255,0),-1)# 绿点表示就绪# 显示图像cv2.imshow("Chrome Hand Controller",img)# 按 'q' 退出ifcv2.waitKey(1)&0xFF==ord('q'):breakcap.release()cv2.destroyAllWindows()if__name__=="__main__":controller=HandController()controller.start()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/24 19:56:23

腾讯AI Lab评估:WeNet生态外的新选择出现

腾讯AI Lab评估&#xff1a;WeNet生态外的新选择出现 在语音识别技术逐渐渗透进日常办公、教育记录和医疗文档的今天&#xff0c;一个现实问题摆在开发者面前&#xff1a;如何让高精度ASR系统不再只是科研团队手中的“重型武器”&#xff0c;而是普通用户也能轻松上手的实用工具…

作者头像 李华
网站建设 2026/5/23 11:20:01

asana任务分配:通过语音指派工作给团队成员

通过语音指派工作&#xff1a;构建智能任务分配系统 在现代企业中&#xff0c;一个常见的场景是&#xff1a;会议刚结束&#xff0c;管理者站在白板前口述一连串待办事项——“王芳负责整理Q2数据&#xff0c;周三前提交&#xff1b;李强跟进客户B的合同修改&#xff0c;周五下…

作者头像 李华
网站建设 2026/5/1 14:13:13

kindle标注同步:语音笔记与电子书内容位置绑定

Kindle 标注同步&#xff1a;语音笔记与电子书内容位置绑定 在数字阅读日益普及的今天&#xff0c;我们获取知识的方式早已不再局限于“看”这一种感官。然而&#xff0c;大多数电子书阅读器仍停留在传统的文本交互层面——翻页、标注、打星、写批注&#xff0c;每一步都需要手…

作者头像 李华
网站建设 2026/5/19 2:03:36

B站视频脚本:手把手教你部署Fun-ASR语音识别系统

手把手教你部署 Fun-ASR 语音识别系统 在内容创作者、教育从业者和企业团队越来越依赖语音转文字技术的今天&#xff0c;一个稳定、高效又易于上手的本地化语音识别工具显得尤为珍贵。市面上虽然有不少云服务 API 可用&#xff0c;但隐私顾虑、网络延迟和持续调用成本始终是绕不…

作者头像 李华
网站建设 2026/5/22 1:29:59

mybatisplus无关?但你可能需要它来存储识别记录

Fun-ASR 中的识别记录存储与语音处理机制解析 在如今本地化 AI 工具日益普及的背景下&#xff0c;一个语音识别系统是否“好用”&#xff0c;早已不再仅仅取决于模型本身的准确率。真正决定用户体验的关键&#xff0c;往往藏在那些看似不起眼的功能背后——比如&#xff0c;你上…

作者头像 李华
网站建设 2026/5/21 11:34:46

一文说清24l01话筒通信协议与寄存器配置

深入理解24L01话筒&#xff1a;从寄存器配置到实战音频传输在构建低功耗无线语音系统时&#xff0c;你是否曾为频繁丢包、语音断续或电池续航短而苦恼&#xff1f;如果你正在使用所谓的“24L01话筒”——这个听起来像是nRF24L01的变种模块&#xff0c;但又缺乏完整文档支持的小…

作者头像 李华