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多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python 爬虫的工具列表大全
Jan 31 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
python多任务及返回值的处理方法
Jan 22 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
Django实现发送邮件功能
Jul 18 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
Python json读写方式和字典相互转化
Apr 18 Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 Python
Python基本数据类型之字符串str
Jul 21 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
简单实用的.net DataTable导出Execl
2013/10/28 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
python读取csv文件示例(python操作csv)
2014/03/11 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
Python中函数参数匹配模型详解
2019/06/09 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
医学生就业推荐表自我鉴定
2014/03/26 职场文书
公司演讲稿开场白
2014/08/25 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
开票员岗位职责
2015/02/12 职场文书
匿名检举信范文
2015/03/02 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
Java Socket实现多人聊天系统
2021/07/15 Java/Android