内容简介:在展示PPT和产品发发布时,或者看电影时如果能用手势操作切换会十分方便。这里使用opencv的开源技术,轻松实现这一功能需求。我很久以前曾经写一个篇被动摄像头的文章,捕捉到摄像头中有移动的物体时,开始录相,移动消失,不再录相。这样具有简单智能的摄像头,可以为客户节省很多的磁盘空间。本文在捕捉运动物体的基础上实现手势操作。原文代码如下:本文基于上一文的技术做手势或者体感识别。前提是我们能够捕捉到动态物体。有一批运行物体的坐标,我们就能根据坐标算出物体运行的方向和速度和方向。其实手势操作也非常简单,就是坐标转
在展示PPT和产品发发布时,或者看电影时如果能用手势操作切换会十分方便。这里使用opencv的开源技术,轻松实现这一功能需求。我很久以前曾经写一个篇被动摄像头的文章,捕捉到摄像头中有移动的物体时,开始录相,移动消失,不再录相。这样具有简单智能的摄像头,可以为客户节省很多的磁盘空间。本文在捕捉运动物体的基础上实现手势操作。原文代码如下: https://blog.csdn.net/cnbloger/article/details/77513514 ,在原代码中,我对捕捉到的动态物体做了一些染色等特效变幻。
本文基于上一文的技术做手势或者体感识别。前提是我们能够捕捉到动态物体。有一批运行物体的坐标,我们就能根据坐标算出物体运行的方向和速度和方向。其实手势操作也非常简单,就是坐标转换。以最简单的手势手上下左右摇动切换文件为例。需要把手部的运动转为向左,向右,向上,向下四个方向的指令。如果准确的获取方向,我们先通过摄像头捕捉到手部运行的第一帧图像和最后一帧图像,有两种算法都可以计算到方向。
1.用最后一帧手的位置减去第一帧手的位置,屏幕坐标是左手坐标系,原点在左上角,x轴正方面向右,Y轴正方向向下,如果手向右,得得值必大于0,向左小于0,向上小于0,向下大于0,由于手的移动和捕捉不是精密仪器,必然会有误差。再比较横向位移竖向位移大小,可以确定手的方向。
2.第二种方法比较简单,在屏幕中央设定一个矩形的区域用来做为方向判断区域,捕捉到手的最后一帧或者所有帧的手的位置,一旦位置的x超出左边界,手势向左,一旦超超过右边界,手势向右,超过上边界,手势向上,超过下边界,手势向下。
两种算法代码如下,1为左,2为右,3为上,4为下,opencv 支持C,C++,python,jAVA和各种系统,使得可以移植在各种平台,这里只展示 JAVA 代码:
public static int getDirect2(Point lastPoint, Point firstPoint) { if (firstPoint != null && lastPoint != null) { int x = (int) (lastPoint.x - firstPoint.x); int y = (int) (lastPoint.y - firstPoint.y); if (x > y) { if (x > 200) { return 1; } else if (x < -200) { return 2; } else { return 0; } } else { if (y > 200) { return 3; } else if (y < -200) { return 4; } else { return 0; } } } else { return 0; } } public static int getDirect3(Point point) { if ((point.x - left) < -1f) { return 1; } else if ((point.x - right) > (1f+50)) { return 2; } else if ((point.y - up) < -1f) { return 3; } else if ((point.y - down) > (1f+50)) { return 4; } return 0; }
运行效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 没跑!勒索病毒幕后操控者现身:就是朝鲜....
- 车联网的裸奔:黑客操控、骚扰电话、垃圾短信
- 算法遇见DNA?未来谁会操控你的内容消费
- 全球性的DNS劫持活动:大规模DNS记录操控
- 全球性的DNS劫持活动:大规模DNS记录操控
- 给我一个无线切入点,我就可以操控你的物理隔离网络
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux程序设计
Neil Matthew、Richard Stones / 陈健、宋健建 / 人民邮电出版社 / 201005 / 99.00元
时至今日,Linux系统已经从一个个人作品发展为可以用于各种关键任务的成熟、高效和稳定的操作系统,因为具备跨平台、开源、支持众多应用软件和网络协议等优点,它得到了各大主流软硬件厂商的支持,也成为广大程序设计人员理想的开发平台。 本书是Linux程序设计领域的经典名著,以简单易懂、内容全面和示例丰富而受到广泛好评。中文版前两版出版后,在国内的Linux爱好者和程序员中也引起了强烈反响,这一热潮......一起来看看 《Linux程序设计》 这本书的介绍吧!