【计算机视觉40例】案例07:数字手势识别
【导读】本文是专栏《计算机视觉40例简介》的第7个案例《手势识别》。该专栏简要介绍李立宗主编《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书的40个案例。 目前,该书已经在电子工业出版社出版,大家可以在京东、淘宝、当当等平台购买。 大家可以在公众号“计算机视觉之光”回复关键字【案例07】获取本文案例的源代码及使用的测试图片等资料。 针对本书40个案例的每一个案例,分别录制了介绍视频。如果嫌看文字版麻烦,可以关注公众号“计算机视觉之光”直接观看视频介绍版。 |
本文简要介绍书中第7个案例(数字手势识别)的算法原理,关于具体实现,大家可以参考书中第8章手势识别。
在进行数字手势识别时,将手势图中“凹陷区域”(该区域被称为凸缺陷)的个数作为识别的重要依据,如图 1所示:
- 表示数值0、数值1的手势具有0个凹陷区域(不存在凹陷区域);
- 表示数值2的手势具有1个凹陷区域;
- 表示数值3的手势具有2个凹陷区域;
- 表示数值4的手势具有3个凹陷区域;
- 表示数值5的手势具有4个凹陷区域;
图1 手势
从上述分析可以看出,在对表示数字的手势进行识别时,直接计算其中的凹陷区域个数即可识别数字2到数字5。
但是,在凹陷个数为0时,既可能表示数值0也可能表示数值1。因此,此时无法通过凹陷区域的个数来识别手势所表示的数字。这种情况下,就需要应用到凸包的概念。
逼近多边形是轮廓的高度近似,但是有时候,我们希望使用一个多边形的凸包来简化它。凸包跟逼近多边形很像,只不过它是物体最外层的“凸”多边形。凸包指的是完全包含原有轮廓,并且仅由轮廓上的点所构成的多边形。凸包的每一处都是凸的,即在凸包内连接任意两点的直线都在凸包的内部。在凸包内,任意连续三个点所构成的面向内部的角,其角度小于180°。例如,在图 2中,最外层的多边形为机械手的凸包,使用它可以处理手势识别等问题。
应用凸包与轮廓的关系即可判断手势0和手势1的差别。如图 3所示,手势0与手势1在以下方面存在着差别:
- 手势0的凸包,与其轮廓基本一致。
- 手势1的凸包,要大于其轮廓值。在手势1的轮廓与凸包之间存在着相对较大的凹陷区域(凸缺陷),凹陷区域面积占比在10%以上。当然,这个10%是个大概值,它因人而异,不是固定值。不同的人手指长度一样,因此该值有一定的波动范围。
当然,其他过程就是简单的图像处理流程了,手势识别的基本流程如图4所示。
手势识别过程如图5所示,能够识别在屏幕内的固定区域的数字手势。
【计算机视觉40例】案例07:数字手势识别相关推荐
- 【计算机视觉40例】案例08:石头剪刀布手势识别
[导读]本文是专栏<计算机视觉40例简介>的第8个案例<石头剪刀布手势识别>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python) ...
- 【计算机视觉40例】案例36:调用CNN实现人脸检测
[导读]本文是专栏<计算机视觉40例简介>的第36个案例<调用CNN实现人脸检测>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Pyth ...
- 【计算机视觉40例】案例40:识别性别与年龄
[导读]本文是专栏<计算机视觉40例简介>的第40个案例<识别性别与年龄>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python)& ...
- 【计算机视觉40例】案例05:物体计数
[导读]本文是专栏<计算机视觉40例简介>的第5个案例<物体计数>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python)>一 ...
- 【计算机视觉40例】案例30:EigenFaces人脸识别
[导读]本文是专栏<计算机视觉40例简介>的第30个案例<EigenFaces人脸识别>的简介,该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenC ...
- 【计算机视觉40例】案例26:姿势识别
[导读]本文是专栏<计算机视觉40例简介>的第26个案例<姿势识别>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python)> ...
- 【计算机视觉40例】案例03:数字水印
[导读]本文是专栏<计算机视觉40例简介>的第3个案例<数字水印>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python)>一 ...
- 【计算机视觉40例】案例19:行人检测
[导读]本文是专栏<计算机视觉40例简介>的第19个案例<行人检测>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python)> ...
- 【计算机视觉40例】案例29:LBPH人脸识别
[导读]本文是专栏<计算机视觉40例简介>的第29个案例<LBPH人脸识别>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python) ...
最新文章
- Redis--发布订阅模式
- swift 设计模式之-责任链模式
- js 操作vuex数据_Vue.js中使用Vuex实现组件数据共享案例
- Git之第三方托管oschina
- java new对象 =null_在Java中将对象分配为null会影响垃圾回收吗?
- STM32 - 定时器的设定 - 基础 01 - Timer Base - Prescaler description - Upcounting mode
- 小米再回应造车传闻:一直关注,还没正式立项
- DDNS及端口映射简介
- centos7安装redies
- 360随身wifi无线网卡linux,360随身wifi2代驱动,当usb无线网卡使用
- 记一次feign调用报错:feign.codec.DecodeException: Error while extracting response for type [java...
- APICloud平台常用技术点汇总详解
- pytracking的kys报错spatial_correlation_sampler_backend.cpython-37m-x86_64-linux-gnu.so: undefined symbo
- unity 关于使用Rigidbody的Addforce但不起作用的一些可能原因以及解决方法
- http与https与其他
- python二维码生成识别代码_Python3+qrcode+zxing生成和识别二维码教程
- DSP_1 环境搭建
- php基地论坛,中国原创歌词基地论坛 - 最大的原创歌词社区
- 图片镜像水平翻转,垂直翻转以及顺时针,逆时针旋转
- 解决Pandas的to_excel()写入不同Sheet,而不会被重写