利用opencv借取相机摄像头为手机和电脑添加手势或者体感操控

栏目: 编程工具 · 发布时间: 6年前

内容简介:在展示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;
	}

运行效果:

利用opencv借取相机摄像头为手机和电脑添加手势或者体感操控 利用opencv借取相机摄像头为手机和电脑添加手势或者体感操控 利用opencv借取相机摄像头为手机和电脑添加手势或者体感操控 利用opencv借取相机摄像头为手机和电脑添加手势或者体感操控


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Linux程序设计

Linux程序设计

Neil Matthew、Richard Stones / 陈健、宋健建 / 人民邮电出版社 / 201005 / 99.00元

时至今日,Linux系统已经从一个个人作品发展为可以用于各种关键任务的成熟、高效和稳定的操作系统,因为具备跨平台、开源、支持众多应用软件和网络协议等优点,它得到了各大主流软硬件厂商的支持,也成为广大程序设计人员理想的开发平台。 本书是Linux程序设计领域的经典名著,以简单易懂、内容全面和示例丰富而受到广泛好评。中文版前两版出版后,在国内的Linux爱好者和程序员中也引起了强烈反响,这一热潮......一起来看看 《Linux程序设计》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具