OpenCV+python手势识别框架和实例讲解
作者:静默虚空 发布时间:2021-09-06 19:47:43
标签:OpenCV,手势,识别
基于OpenCV2.4.8和 python 2.7实现简单的手势识别。
以下为基本步骤
1.去除背景,提取手的轮廓
2. RGB->YUV,同时计算直方图
3.进行形态学滤波,提取感兴趣的区域
4.找到二值化的图像轮廓
5.找到最大的手型轮廓
6.找到手型轮廓的凸包
7.标记手指和手掌
8.把提取的特征点和手势字典中的进行比对,然后判断手势和形状
提取手的轮廓 cv2.findContours()
找到最大凸包cv2.convexHull(),然后找到手掌和手指的相对位置,定位手型的轮廓和关键点,包括手掌的中心,手指的相对位置
特征字典主要包括以下几个方面:名字,手掌中心点,手掌的直径,手指的坐标点,手指的个数,每个手指之间的角度
例如:
# 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 --------------------------------------#
最终的识别结果如下:
示例代码
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
来源:https://blog.csdn.net/linsk/article/details/76457955


猜你喜欢
- Anaconda安装安装步骤:1、官网下载安装包:https://www.anaconda.com/distribution/2、运行并选择
- 简单的LSTM问题,能够预测一句话的下一个字词是什么固定长度的句子,一个句子有3个词。使用one-hot编码各种引用import keras
- 1.前言面向对象编程的三大特性:封装、继承、多态。可见继承是面向对象程序设计中一个重要的概念。Go 作为面向对象的编程语言,自然也支持继承。
- 接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n'等特殊字符的两种方式:a)利用转义字
- 比如用 print ','.join(datelist) 就可以将datelist列表里面的所有项目并成一个字符串,当然这个
- 对于那些需要在登录环境下进行的爬虫操作,模拟登陆或伪装已登录状态是一个刚需。分析了网上关于模拟登录的例子,很多都基于用户名/密码发起一个po
- 本文实例讲述了windows下Python实现将pdf文件转化为png格式图片的方法。分享给大家供大家参考,具体如下:最近工作中需要把pdf
- 本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名。一、os.walk()模块os中的walk()函数可
- function cal_pace(d,h,m,s){ var distance = d; var hours = h;
- ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。我在初学时查阅过大量相关资料,发现其中提供
- 用数据库的时候就会遇到有多个用户,分配用户权限的情况,有些用户只读,有些用户可以读写,有些用户只能操作一个或者多个数据库,如何给mysql的
- frm文件和ibd文件简介 在MySQL中,如果我们使用了默认的存储引擎innodb创建一张表,那么在文件夹下面就会
- function formatNum(num){ if
- 本文讲述了Python文件操作类的操作实例,详细代码如下:#!/usr/bin/env python#!/usr/bin/env pytho
- jTopo 帮助说明网站http://www.jtopo.com/index.html使用例子:http://www.jtopo.com/d
- 弹出框有两种:页面弹出框(可定位元素能操作)、Windows弹出框(不能直接定位)一、页面弹出框等待弹出框出现之后,定位弹出框,操作其中元素
- 官方说明链接:https://intellij-support.jetbrains.com/hc/en-us/community/posts
- 本文实例讲述了Python计时相关操作。分享给大家供大家参考,具体如下:内容目录:1. 时间戳2. 当前时间3. 时间差4. python中
- 在同一个局域网的多台电脑,传递文件时可以通过 搭建web服务器,设置目录浏览的方式快速分享。如果上传就比较麻烦了,通过QQ/微信会产生很多文
- 本文实例讲述了Python3实现的反转单链表算法。分享给大家供大家参考,具体如下:反转一个单链表。方案一:迭代# Definition fo