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
0
投稿
猜你喜欢
- Python读写文件模式 1、r 打开只读文件,该文件必须存在。 2、r+ 打开可读写的文件,该文件必须存在。 3、w 打开只写文件,若文件
- 本文实例讲述了Python udp网络程序实现发送、接收数据功能。分享给大家供大家参考,具体如下:1. udp网络程序-发送数据创建一个基于
- 遵循Web标准的思想,网页要表现出一种亲和力。那么,针对残障用户来说,其“阅读”器可不能读取图像上传递的信息的。所以我们会采用一种Using
- 前言Windows10 在 UWP 应用中支持亚克力画刷,可以在部件的底部绘制亚克力效果的背景图。下面我们使用 QLabel 来模拟这个磨砂
- 在写一个多线程类的时候调用报错 RuntimeError: thread.__init__() not calledclass Notify
- 阅读目录源码请参考:starnightcyber/scripts主要使用TelnetClient类,封装了登录和执行命令的基本操作。源码如下
- 简单的说,组织体系指的就是组织信息的方式。看了一堆拗口的定义后,我根据自己的理解画了下面这个图:从上图看出,同样的图形元素由于采用了不同的组
- 这篇文章主要介绍了python使用配置文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 嘀咕嘀咕: 每次写文章往往开头是最难的,总想给UED读者不同的sense。就像我们设计产品总是想迎合我们的用户,最后觉得好似跟在用户后面狂奔
- 本文介绍python操作excel的方法(xlsxwriter包的使用),具体内容如下xlsxwriter包的安装pip install x
- 第1章 ansible软件概念说明python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (sal
- 本文仅仅梳理最基本的绘图方法。一、初始化假设已经安装了matplotlib工具包。利用matplotlib.figure.Figure创建一
- 阅读:Chapter 3 * 的表格“Misquotations are the only quotations tha are never
- 1. 如何停止任务?我们可以通过 asyncio.Task 对象上的 cancel() 方法取消任务。如果任务被取消,cancel() 方法
- 下面是十个Python中很有用的贴士和技巧。其中一些是初学这门语言常常会犯的错误。注意:假设我们都用的是Python 31. 列表推导式你有
- SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information)。由SMI描述
- 在某些特殊情况下,我们的 Python 脚本需要调用父目录下的其他模块。例如:在编写 GNE 的测试用例时,有一个脚本 generate_n
- 一个协程里可以启动另外一个协程,并等待它完成返回结果,采用await关键字,例子如下:import asyncioasync def out
- 最近的一个页面中碰到的,本来想用 border 来模拟设计图的虚线效果,但是很明显 border 效果不如设计图来的好看。顺便研究了下 da
- 之前需要做一些目标检测的训练,需要自己采集一些数据集,写了一个小demo来实现图片的采集使用方法:指定name的名称,name为分类的标签按