LeapMotion简单介绍及图形获取
来源:互联网 发布:网络信号无线传输器 编辑:程序博客网 时间:2024/06/06 20:16
之前写过一篇文章关于C#简单调用LeapMotion的,然后前两天被工作组微信平台推送了一下,发现有同学对这个并不了解,所以今天先介绍一下Leap Motion是什么,然后说一下Leap Motion的一点开发内容。
Leap Motion简单介绍
相信很多人应该知道XBox吧,那有没有注意过XBox上的那个体感设备,那个是微软的kinect,而Leap Motion 也是做手势识别的,它只有一个口香糖大小,就可以监控你的手势,然后传给电脑进行处理。
Leap Motion 控制器不会替代您的键盘、鼠标、手写笔或触控板,相反,它与它们协同工作。当 Leap Motion 软件运行时,只需将它插入您的 Mac 或 PC 中,一切即准备就绪。只需挥动一只手指即可浏览网页、阅读文章、翻看照片,还有播放音乐。即使不使用任何画笔或笔刷,用您的指尖即可以绘画,涂鸦和设计。
用您的手指即可切水果、打坏蛋;用您的双手即可飙赛车。
您可以在3D空间进行雕刻、浇铸、拉伸、弯曲以及构建3D图像,还可以把他们拆开以及再次拼接。
体验一种全新的学习方式,用您的双手探索宇宙,触摸星星,还可以围绕太阳翱翔。。
一种全新的乐器体验,弹奏空气吉他、空气竖琴和空中的一切乐器,还可以体验全新的采摘和拾起方式。
您与电脑间的开阔空间,现已成为您双手和手指的舞台。不论它们的每一次移动多么细微,又或是多么大幅度,Leap Motion 控制器都能精确追踪。从技术上说,这是一个 8 立方英尺的可交互式 3D 空间。但您可以说,这就是魔法。
您的一只手,有 29 块骨头、29 个关节、123 根韧带、48 条神经和 30 条动脉。这是一种精密、复杂和令人惊叹的技术(x 2)。但您却能不费吹灰之力,轻松掌握。Leap Motion 控制器也几乎完全掌握这一技术。
Leap Motion 控制器可追踪全部 10 只手指,精度高达 1/100 毫米。它远比现有的运动控制技术更为精确。这就是您可以在一英尺宽的立方体中,绘制出迷你杰作的原因。
150°超宽幅的空间视场,您可以像您在真实世界一样随意在3D的空间移动您的双手。在 Leap Motion 应用中,您可以伸手抓住物体,移动它们,甚至可以更改您的视角。
Leap Motion 控制器以超过每秒 200 帧的速度追踪您的手部移动,这就是屏幕上的动作与您的每次移动完美同步的原因。
以上这些是百度百科给出的解释,说的简单一点就是可以不用键盘鼠标去控制电脑或者玩游戏。(感兴趣的同学可以从某宝上淘一个,买一百多那种就能用)下面是我的操作视频
Leap Motion是一种检测和跟踪hands, fingers and finger-like tools的设备。该设备在一个较近的环境中操作,精度高,跟踪帧速率高。
Leap Motion 视野是集中在设备上方的一个倒置的金字塔。Leap Motion检测的有效范围是约25毫米至600毫米(1英寸到2英尺)。
Leap Motion手部图像获取
public delegate void Receivedelegate(byte[] im1, byte[] im2); /// <summary> /// 图片委托 /// </summary> public event Receivedelegate ReceiveEvent; public override void OnImages(Controller arg0) { Frame frame = arg0.Frame(); ImageList images = frame.Images; if (frame.Images.Count >= 2) { ReceiveEvent(images[0].Data, images[1].Data); } }
两个image数据分别是LeapMotion的两个摄像头的数据
然后是form后台:
private MyListener myListener; private Controller leap; public Form1() { InitializeComponent(); leap = new Controller(); myListener = new MyListener(); leap.AddListener(myListener); leap.SetPolicy(Controller.PolicyFlag.POLICY_IMAGES);//启动图像的获取 myListener.ReceiveEvent += new MyListener.Receivedelegate(myListener_ReceiveEvent); } void myListener_ReceiveEvent(byte[] im1, byte[] im2) { Emgu.CV.Image<Emgu.CV.Structure.Gray, byte> im = new Image<Emgu.CV.Structure.Gray, byte>(640, 240);//640*240灰色图像,可以打断点发现数组im1长度正好为640*240 Emgu.CV.Image<Emgu.CV.Structure.Gray, byte> imtest = new Image<Emgu.CV.Structure.Gray, byte>(640, 240);//640*240灰色图像,可以打断点发现数组im1长度正好为640*240 im.Bytes = im1; CvInvoke.Flip(im, imtest, Emgu.CV.CvEnum.FlipType.Horizontal);//图像水平翻转 pictureBox1.Image = imtest.Bitmap; im.Bytes = im2; CvInvoke.Flip(im, imtest, Emgu.CV.CvEnum.FlipType.Horizontal);//图像水平翻转 pictureBox2.Image = imtest.Bitmap; }
今天事儿比较乱,写的不够详细,实际这快重点是OpenCV,代码我一样传到csdn上了,点击这里下载(因为OpenCV的包体太大所以只上传了代码,有问题或者想要直接运行的代码可以留言我会发给大家),有问题欢迎留言,或者私聊我
- LeapMotion简单介绍及图形获取
- 3D图形及OpenGL的简单介绍
- LeapMotion c#获取骨骼坐标
- LeapMotion
- Ubuntu+LeapMotion C++环境配置及例子
- 简单介绍Matrix的图形特效
- 简单介绍Matrix的图形特效
- Git图形用户工具介绍及比较
- Git图形用户工具介绍及比较
- Git图形用户工具 介绍及比较
- Git图形用户工具介绍及比较
- 获取图形对象的属性及选入新的图形对象
- Android中图形参数及图形内存信息获取
- Quartz2D简单图形绘制及操作
- C语言中strand() rand() time()函数的简单介绍及获取随机数的方法
- 下载安装开发者版本LeapMotion驱动及SDK
- STRUCTS配置及简单介绍
- WMI介绍及简单应用
- Android自定义控件之仿通讯录联系人
- 开心每一天happy
- Welcome to the KITTI Vision Benchmark Suite!
- Linux下使用touch批量修改文件夹和文件的时间
- 一个“-”引发的血案
- LeapMotion简单介绍及图形获取
- BottomNavigationBar
- JS数组 全解析(创建数组的方法、稀疏数组、检测数组、数组元素的增删、常用的数组方法)
- Linux下JDK配置
- json字符串与对象互转
- 正交实验测试用例利器——pict
- sharding-jdbc源码阅读之Adapter
- 坚持#第168天~辛德勒、珍惜。刘旭晔农村美食天天吃货项目感慨
- 中科院大牛博士是如何进行文献检索和阅读(好习惯受益终生)