Python-基于mediapipe,pyautogui,cv2和numpy的电脑手势截屏工具(进阶版)

ops/2025/2/2 3:45:35/

前言:在我们的日常生活中,手机已经成为我们每天工作,学习,生活的一个不可或缺的部分。众所周知:为了我们的使用方便,手机里面的很多功能非常人性化,既便捷又高效,其中就有手机的截屏方式,它们花样繁多,如三指截屏,手势截屏等。那么怎么在电脑里面也实现这个功能呢?(虽然我们知到电脑也有快捷的截屏方式-Ctrl+Shift+S。但是很明显,这依然不够快捷,因为这至少需要用户的两次手动操作)。那么废话不多说,我们直接开始今天的Python学习之路-利用PyCharm手搓一个基于mediapipe,pyautogui,cv2numpy的电脑手势截屏工具。

 编程思路:本次编程我们需要pyautogui来获取屏幕的尺寸,这对于确定按钮的位置和大小非常有用;接着利用mediapipe初始化一个手部模型,用来检测视频流中的手部关键点;numpy提供了计算机在采集了用户手部姿态所得到的数据的处理,并与mediapipe所建立的数学模型进行比较等。cv2是本次编程的重头戏,它为调用计算机摄像头进行信息采集,以及用户手部模型的实时可视化展现等提供了可能。这次我们额外添加了win32com库,用于语音提醒用户程序初始化进程。此外,我们将截屏所得图片的存放位置改为系统的图片文件夹中,更接近普通的截屏操作(这个需要调用os库操作系统,pathlib库获取文件位置,time库获取时间戳等)。

第一步:导入库

本次编程所需调用的库:

1,标准库:cv2,numpy,time,os,pathlib。

2,第三方库:mediapipe,pyautogui,win32com。

python"># 导入必要库
import cv2
import mediapipe as mp
import pyautogui
import numpy as np
import os
from pathlib import Path
import time
import win32com.client

第二步:程序初始化

我们需要初始化判断模型并给出屏幕尺存等相关变量参数。此外,我们同时也需要初始化语音播放器音量,语速及图片的保存路径等。

python"># 初始化语音播报器
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Rate = 1  # 设置语速
speaker.Volume = 100  # 设置音量
speaker.Speak("欢迎使用手势截图工具")
python"># 初始化保存路径
save_folder = get_pictures_path() / "Gesture_Screenshots"
save_folder.mkdir(parents=True, exist_ok=True)# 初始化MediaPipe手部模型
mp_hands = mp.solutions.hands
hands = mp_hands.Hands(max_num_hands=2, min_detection_confidence=0.7)
mp_draw = mp.solutions.drawing_utils# 屏幕尺寸和状态变量
screen_w, screen_h = pyautogui.size()
waiting_for_click = False
blink_counter = 0
screenshot_taken = False
btn_rect = (500, 400, 200, 60)# 自定义紫色调色板
PURPLE_POINT = (255, 0, 255)  # BGR格式-亮紫色
PURPLE_LINE = (200, 0, 200)  # BGR格式-深紫色

 第三步:构建内部逻辑

接下来我们需要编写程序内部判断模型等的内在逻辑,并将鼠标,按键事件与计算机采集信息所得的对比结果联系起来。此外,我们还会构建图片的路径函数以将图片存放至指定位置。

python"># 获取图片保存路径函数
def get_pictures_path():if os.name == 'nt':return Path.home() / "Pictures"else:xdg_pics = 

http://www.ppmy.cn/ops/154927.html

相关文章

AJAX RSS Reader:技术解析与应用场景

AJAX RSS Reader:技术解析与应用场景 引言 随着互联网的快速发展,信息量呈爆炸式增长。为了方便用户快速获取感兴趣的信息,RSS(Really Simple Syndication)技术应运而生。AJAX RSS Reader作为一种基于AJAX技术的信息读取工具,在用户体验和信息获取方面具有显著优势。本…

5.4.1 结构化分析方法

文章目录 结构化分析与设计方法数据流图数据字典加工逻辑 结构化分析与设计方法 结构化分析与设计方法核心思想:“自顶向下,逐层分解”,是一种面向数据流的传统软件开发方法。以数据流为核心,构建分析模型、设计模型。结构化分析与…

基于遗传优化GRNN和Hog特征提取的交通标志识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 HOG 4.2 GRNN(General Regression Neural Network)模型原理 4.3 遗传算法(GA)优化GRNN平滑因子 5.算法完整程序工程 1.算法运行效果图预…

YOLOv8:目标检测与实时应用的前沿探索

随着深度学习和计算机视觉技术的迅速发展,目标检测(Object Detection)一直是研究热点。YOLO(You Only Look Once)系列模型作为业界广受关注的目标检测框架,凭借其高效、实时的特点,一直迭代更新…

FFmpeg(7.1版本)在Ubuntu18.04上的编译

一、从官网上下载FFmpeg源码 官网地址:Download FFmpeg 点击Download Source Code 下载源码到本地电脑上 二、解压包 tar -xvf ffmpeg-7.1.tar.xz 三、配置configure 1.准备工作 安装编译支持的软件 ① sudo apt-get install nasm //常用的汇编器,用于编译某些需要汇编…

ARM嵌入式学习--第十一天(中断处理 , ADC)

--中断的概念 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回被暂停的程序继续运行 --CPU处理事情的方式 -轮询方式 不断查询是否有事情需要处理&#xff0c…

亚博microros小车-原生ubuntu支持系列:12 URDF 模型

ros2笔记-6.2 使用urdf创建机器人模型_urdf机器人建模-CSDN博客 之前跟小鱼老师大概了解过urdf模型。再贴一下亚博的介绍 4.1、组成部分 link,连杆,可以想象成是人的手臂 joint,关节,可以想象成是人的手肘关节 link与joint的关…

labelme_json_to_dataset ValueError: path is on mount ‘D:‘,start on C

这是你的labelme运行时label照片的盘和保存目的地址的盘不同都值得报错 labelme_json_to_dataset ValueError: path is on mount D:,start on C 只需要放一个盘但可以不放一个目录