Skip to content

简单的手势识别,通过摄像头捕捉、识别并做出相应操作

Notifications You must be signed in to change notification settings

ligb888/hand-gesture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

通过mediapipe识别手,根据一些简单规则实现简单手势的识别。

使用手势控制键盘鼠标,进行移动、点击、拖拽/框选、上下滚动、按键触发等操作。

使用

1.先安装依赖

方式1,通过pip安装依赖(python版本为3.8.10):

pip install -r requirement.txt

方式2,通过conda:

conda env create -f environment.yaml

2.执行主程序

python main.py

手势操作:

目前自定义了一些手势,有别的想法可以自行修改

  • 移动鼠标:食指单指竖起,鼠标此时相对食指指尖在图像上的位置进行移动
  • 左键点击:食指、大拇指竖起
  • 右键点击:食指、小指竖起,或食指、无名指、小指竖起
  • 拖动/框选:食指、中指竖起,触发时会按下鼠标左键,当手势发生变化时取消按下
  • 滚轮向下:中指、无名指、小指竖起
  • 滚轮向上:食指、中指、无名指、小指竖起
  • tab:握拳+五指张开,组合手势,目前定义的为触发tab键

参数配置

配置参数在config.ini中,具体参数如下

[common]
# 摄像头索引,设置为-1时使用rtsp推流
index = 0
# rtsp推流地址
rtsp = rtsp://{self.user}:{self.pwd}@{self.ip}/cam/realmonitor?channel=1&subtype=0
# 摄像头的分辨率、帧率、镜像反转模式(-2表示不反转)
cap_width = 1920
cap_height = 1080
cap_fps = 60
cap_flip = -1
# 识别左手还是右手,(如果识别到多只左手或右手,会选取第一只识别到的手)
hand = Right
# 鼠标移动平滑参数
smooth = 4
# 是否显示图像,0否1是
show = 1
# 截取摄像头局部范围,左上角坐标、右下角坐标(摄像头范围大时需要截取,crop2为"0, 0"时不截取),截取范围长宽比为16:9或16:10,好映射屏幕
crop1 = 0, 0
crop2 = 0, 0
# 是否触发执行,0否,1是,为0时不会执行具体操作,用于调试
trigger = 1

打包

执行命令进行打包(不同的环境打包参数可能需要调整)

pyinstaller main.py --name="hand-gesture" --add-data="config.ini;." --add-data="venv/Lib/site-packages/mediapipe/modules;mediapipe/modules" -w

About

简单的手势识别,通过摄像头捕捉、识别并做出相应操作

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published