Kinect开发笔记之七Visual Studio结合C#调控Kinect俯仰角度

总感觉自己前面啰啰嗦嗦写了好多,却一直都没有使用用开发kinect的重型武器——Visual Studio。

那么本次我们就借助于Visual Studio,写一个C#程序,连接Kinect并调用Kinect SDK标准函数库来改变Kinect的俯仰角。

首先我们打开VS创建一个项目。选择Visual C#下面的Windows,然后选择控制台应用程序,命名为Kinect_Controller,选择你自己的保存路径。

建完之后,来到解决方案资源管理器。找到引用,右键——添加引用,在弹出的引用管理器中,右上角直接搜索Kinect,勾选MicrosoftKinect 1.8.0.0,然后点击确定。

如果组件引用设置正常的话,我们就可以在引用下面看到Kinect的相关组件。

接下来是我们的主程序。先在这里把全部的代码贴出来再解释。

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Kinect;
using System.Threading;namespace Kinect_Controller
{class Program{static void Main(string[] args){KinectSensor sensor = KinectSensor.KinectSensors[0];if (sensor == null){Console.WriteLine("找不到任何可用的Kinect装置,程序退出");return;}sensor.Start();//获取连接在PC上的第一个传感器并且启动sensor.ElevationAngle = 0;//俯仰角度恢复到零度Console.WriteLine("Kinect已启动,空格键退出");Console.WriteLine("现在角度为" + 0);ConsoleKey press;//向上箭头加5度,向下箭头减5度,并内置最大最小角度检测while((press = Console.ReadKey().Key)!= ConsoleKey.Spacebar){if (press == ConsoleKey.DownArrow){if (sensor.ElevationAngle - 5 < sensor.MinElevationAngle)sensor.ElevationAngle = sensor.MinElevationAngle;elsesensor.ElevationAngle = sensor.ElevationAngle - 5;}else if(press == ConsoleKey.UpArrow){if (sensor.ElevationAngle + 5 > sensor.MaxElevationAngle)sensor.ElevationAngle = sensor.MaxElevationAngle;elsesensor.ElevationAngle = sensor.ElevationAngle + 5;}Thread.Sleep(1000);Console.WriteLine("现在角度为"+ sensor.ElevationAngle);}sensor.Stop();}}
}

下面我们来从上向下详细解释一下代码。
(1)我们在最上方加入了两个命名空间。
using Microsoft.Kinect;//告知编译程序使用该命名空间,所有的用C#写的Kinect程序都需要如此。
using System.Threading;//程序中使用了Thread方法,所以要引入此命名空间。

(2)获得传感器
KinectSensor sensor = KinectSensor.KinectSensors[0];
直到sensor.Start();这一代码段,是要获取与pc连接的第一个Kinect传感器。如果为空,则输出”找不到任何可用的Kinect装置,程序退出”,若不为空,则启动Kinect。

(3)重置角度
Kinect的俯仰角度可能因为人为原因或者程序原因初始情况并不位于零度,所以启动Kinect后,我们首先要重置Kinect的角度。使用sensor.ElevationAngle = 0,并且输出两句话来说明我们的程序。

(4)结合边界机制上下方向键调节角度
因为Kinect中角度俯仰范围为-27~27,所以我们要加入检测机制。
这个并不困难,原理是读入的按钮如果是上方向键(下方向键),角度如果加5度(减5度)后不超过最大角度那么是安全的,如果将会超过,那么就让它的角度等于最大角度。

sensor.MinElevationAngle和sensor.MaxElevationAngle分别是-27和+27。

并且在调整角度后,输出当前的角度,以提醒操作者

(5)退出
while((press = Console.ReadKey().Key)!= ConsoleKey.Spacebar)
这是while的条件,所以当我们按下空格的时候,会跳出转而直接执行sensor.Stop()退出程序。

(6)注意事项以及存在的问题
Kinect for Windows 1.0的官方文档中提到,1秒钟内最多改变一次角度,连续改变15次后,系统将强制休息20秒以防止电机过热,这也是为什么我们会引入Thread(1000)的原因,就是契合这一要求让Kinect得到充分的休息和冷却。

因为这一点,我们的程序本身就难免会存在一些问题,如果你按下上下方向键的频率快于一秒,键盘的输入会累积在缓冲区等待处理,因为我们的设定是等一秒,处理一次。这会造成很大的延迟和卡顿。我们可以根据需要做一些优化处理,即在沉睡的1秒内,将键盘输入无效化,这一次我们先不做深入讨论,因为写博文的时候,我的C#也是有点儿惨不忍睹的。

最后一个是.NET组件版本的问题,默认情况下,VS认为你的程序需要绑定特定版本的.NET组件。这样就会造成组件升级后,VS找不到原来版本的组件而无法编译。所以在解决方案资源管理器中,选中Microsoft.Kinect右键——属性,特定版本改为False就可以了。

下面来自己跑一跑这个Kinect程序,运行结果如下。

注:博文中代码参考并修改自《Kinect体感程序设计入门》。

2015.3.25 10:05
By Mr.Losers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定量库存控制模型_探索全面流动管理TFM 库存控制与低减的理性策略

库存乃万恶之源库存不仅占用了资金&#xff0c;还占用了各种管理性资源&#xff0c;形成了“财务性显性成本“而且过多的库存导致“缓冲区”的存在&#xff0c;还使得各类问题变得不那么紧迫&#xff0c;从而掩盖了各类隐藏的问题&#xff0c;这被称为“隐形成本”零库存不仅做…

C#——一个简单的文件管理器

最近在紧张的学习C#&#xff0c;说实话对C#之前没有太多的接触过&#xff0c;只知道C#的特性与java很相似&#xff0c;接触了之后才发现C#跟java相比区别不是很多&#xff0c;但它是一门实现程序能力比Java还要好的语言&#xff08;仅代表个人观点&#xff09;。 有许多新手在…

kali linux超级用户_如何优雅的在Linux上使用Powershell]

点击上方“蓝字”关注我们吧&#xff01;译文声明本文是翻译文章&#xff0c;文章原作者 TJ Null文章来源&#xff1a;https://www.offensive-security.com原文地址&#xff1a;https://www.offensive-security.com/offsec/kali-linux-powershell-pentesting/译文仅供参考&…

Laravel5.5 MySQL配置、读写分离及操作

2019独角兽企业重金招聘Python工程师标准>>> Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考&#xff1a;http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php&#xff08;但是数据库用户及密码等敏感信…

Kinect开发笔记之八C#实现Kinect声音的追踪

声明&#xff1a;本文中特征多针对Kinect for windows 1.0&#xff0c;新版的Kinect Sensor可能有部分数值或方法有一定变化&#xff0c;请知晓。Kinect的声音来自下方的4个麦克风组成的麦克风阵列。传感器内含数字信号处理器&#xff0c;可以用来强化接受声音的清晰度同时处理…

国服服务器_《Minecraft我的世界》第三方服务器的基本储备

今天我想单独来聊一聊Minecraft我的世界第三方服务器的发展。世外荒原玩家作品我来到头条的第一篇文章就发表了一篇我对Minecraft现状的看法&#xff0c;现在国服的状态对老玩家不是很友好。(这不说明国服的运营战略路线是有问题的)因此诞生了一大堆第三方服务器。世外荒原玩家…

Unity中Time.deltaTime的含义及其应用

相信Unity的开发者或者初学者都对Time.deltaTime并不陌生&#xff0c;我们经常会在代码中用到或者看到它&#xff0c;今天去官方的API文档查了一下&#xff0c;感觉它非常有用&#xff0c;所以翻译一下以引导初学者。 原文网址&#xff1a; file:///Applications/Unity/Unity…

unity3d曲线text文本

测试.pngusing System; using System.Collections.Generic;namespace UnityEngine.UI.Extensions {/// <summary>/// Curved text.让文本按照曲线进行显示 【注意对Image的变形 也是可以的】/// 说明&#xff1a; 对Text的操作就和 shadow 和 outline 组件类似。/// <…

Unity中Quaternion的含义及其使用

官网API文档&#xff1a; file:///Applications/Unity/Unity.app/Contents/Documentation/html/en/ScriptReference/Quaternion.html Quaternion的意思是四元数&#xff0c;用于代表旋转。 它们是紧致的&#xff0c;不会产生万向节死锁并且能够很容易被插值。Unity内使用Quat…

Python PIPEs

2019独角兽企业重金招聘Python工程师标准>>> https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm 转载于:https://my.oschina.net/zungyiu/blog/1860857

延时消息_Handler的消息延时是怎么实现的

消息延时做了什么特殊处理&#xff1f;是发送延时&#xff0c;还是消息处理延时&#xff1f;延时的精度如何&#xff1f;通常我们使用Handler的消息延时都是调用sendMessageDelayed函数实现的&#xff0c;其中delayMillis是需要延时的毫秒。通过跟踪sendMessageDelayed函数可以…

4 关卡流 进阶_全息武器全解析,记住4个点全区第一就是你!

实不相瞒&#xff0c;每次看着全息武器糖糖都感觉自己像钢铁侠高端大气上档次&#xff0c;低调奢华有内涵那么问题来了&#xff01;这个全息武器究竟该怎么玩才能成为真正的钢铁侠&#xff1f;我的使命之全息武器【作者&#xff1a;D38激战阿曼——潜龙小生】全息武器在属性增加…

【渗透过程】嘉缘网站 --测试

声明&#xff1a;本片文章测试网站为测试靶场 信息收集阶段&#xff1a; 首先使用了一些常见的扫描工具&#xff1a;nmap 御剑 使用nmap扫描端口 发现网站开放了 135 139 445 3306 等端口 这里可以看到网站开放了一些危害较高端口&#xff1a;135 225等 使用御剑扫描到一些敏感…

文档过期打不开怎么办_标准的产品需求文档在这里!(详细说明版)(2)

接着上篇继续写&#xff0c;上篇请点击标准的产品需求文档在这里&#xff01;(详细说明版)(1)入口已经写完&#xff0c;读此文档的无论是研发人员还是测试都已经知晓此需求需要做的从哪里进入&#xff0c;接下来就是主菜了&#xff0c;进入以后该干嘛。进入以后当然就是新的页面…

Macbook全系列详细分析及购机指南

时至今日&#xff0c;极佳的用户体验、强大的功能、独特的设计感、广阔的市场和无可比拟的品牌魅力已经让苹果公司各种电子产品的迅速普及&#xff0c;其中Macbook逐渐被越来越多的人所青睐&#xff0c;尤其是从事一些特定行业的工作者&#xff08;比如IT、电信、互联网以及艺术…

惠普m1005连接电脑步骤_电脑连接电视机详细步骤方法图文

电脑连接电视机有什么好处呢&#xff1f;小编想到了几点&#xff0c;那就是屏幕大&#xff0c;而且可以在电视机上使用网络看到自己想看的剧。还有就是可以更多的人一起做着来看。所以总的来说电脑连接电视机还是好处比较多的。下面我就来告诉你们电脑怎么连接电视机。有的时候…

对程序实施精准手术!阿里安全猎户座实验室首创“自动逆向机器人”

近日举办的看雪安全开发者峰会上&#xff0c;阿里安全猎户座实验室首度向外界展示了最新的研究成果——“自动逆向机器人”。该机器人可以像医生一样“望闻问切”&#xff0c;对程序进行显微镜级别的勘察&#xff0c;并完整“回放”其运作过程&#xff0c;因此&#xff0c;可以…

《魔兽世界》的魅力究竟在哪儿?

写在前面&#xff1a;《魔兽世界》&#xff08;World of Warcraft&#xff0c;后面简称WOW&#xff09;&#xff0c;是由暴雪开发的一款大型角色扮演网络游戏&#xff0c;曾经付费的正式用户一度超过1150万人&#xff0c;覆盖244个国家和地区&#xff0c;是曾经的“世界第一网游…

Service Mesh所应对的8项挑战

2019独角兽企业重金招聘Python工程师标准>>> Lori Macvittie 微服务架构是把双刃剑&#xff0c;我们享受它带来的开发速度&#xff08;development velocity&#xff09;&#xff0c;却也不得不面对服务间通讯带来的复杂性问题。 目前大多数扩展容器化微服务的架构多…

什么叫内部银团_什么是紫钛晶?紫钛晶是不是天然水晶?

都说紫钛晶是紫水晶与钛晶的结合&#xff0c;听上去好像这种水晶不是天然的&#xff0c;像是人工合成的&#xff0c;事实上并非如此&#xff0c;紫钛晶也是天然形成的水晶&#xff0c;由于内部的包裹体是金色的&#xff0c;因此被称为紫钛晶。和菩心晶舍家的晶舞倾城一起了解紫…