OpenCV+python手势识别框架和实例讲解


Posted in Python onAugust 03, 2018

基于OpenCV2.4.8和 python 2.7实现简单的手势识别。

以下为基本步骤

1.去除背景,提取手的轮廓

2. RGB->YUV,同时计算直方图

3.进行形态学滤波,提取感兴趣的区域

4.找到二值化的图像轮廓

5.找到最大的手型轮廓

6.找到手型轮廓的凸包

7.标记手指和手掌

8.把提取的特征点和手势字典中的进行比对,然后判断手势和形状

提取手的轮廓 cv2.findContours()

OpenCV+python手势识别框架和实例讲解

找到最大凸包cv2.convexHull(),然后找到手掌和手指的相对位置,定位手型的轮廓和关键点,包括手掌的中心,手指的相对位置

OpenCV+python手势识别框架和实例讲解

特征字典主要包括以下几个方面:名字,手掌中心点,手掌的直径,手指的坐标点,手指的个数,每个手指之间的角度

例如:

# BEGIN ------------------------------------#
V=gesture("V")
V.set_palm((475,225),45)
V.set_finger_pos([(490,90),(415,105)])
V.calc_angles()
dict[V.getname()]=V
# END --------------------------------------#

最终的识别结果如下:

OpenCV+python手势识别框架和实例讲解

示例代码

frame=hand_threshold(fg_frame,hand_histogram)
  contour_frame=np.copy(frame)
  contours,hierarchy=cv2.findContours(contour_frame,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
  found,hand_contour=hand_contour_find(contours)
  if(found):
   hand_convex_hull=cv2.convexHull(hand_contour)
   frame,hand_center,hand_radius,hand_size_score=mark_hand_center(frame_original,hand_contour)
   if(hand_size_score):
    frame,finger,palm=mark_fingers(frame,hand_convex_hull,hand_center,hand_radius)
    frame,gesture_found=find_gesture(frame,finger,palm)
  else:
   frame=frame_original

以上这篇OpenCV+python手势识别框架和实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
Python图算法实例分析
Aug 13 Python
python常用函数详解
Sep 13 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
django反向解析和正向解析的方式
Jun 05 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
jupyter 导入csv文件方式
Apr 21 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
用python对excel查重
Dec 07 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 #Python
Python测试网络连通性示例【基于ping】
Aug 03 #Python
python版opencv摄像头人脸实时检测方法
Aug 03 #Python
python 读取摄像头数据并保存的实例
Aug 03 #Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 #Python
python调用摄像头显示图像的实例
Aug 03 #Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 #Python
You might like
php str_pad 函数使用详解
2009/01/13 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
pyv8学习python和javascript变量进行交互
2013/12/04 Python
Python读取Excel的方法实例分析
2015/07/11 Python
Python网络编程 Python套接字编程
2017/09/13 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python2与Python3的区别详解
2020/02/09 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
中职应届生会计求职信
2013/10/23 职场文书
《荷花》教学反思
2014/04/16 职场文书
给老婆的保证书范文
2014/04/28 职场文书
小学新教师个人总结
2015/02/05 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL