Kinect获取深度图和深度数据

Kinect获取深度图和深度数据做关于深度信息处理的,正好实验室配备了kinect2代,就想着先用kinect获取深度信息来处理,之后换其他设备只要有深度信息就直接往后推进就行,不过网上教程虽然多,但是第一次总会栽进坑中,记录一波,下回重来的时候长个教训。配置,参考https://blog.csdn.net/qq_37059483/article/details/77855398#commentsedit因为现在很多版本…

大家好,又见面了,我是你们的朋友全栈君。

做关于深度信息处理的,正好实验室配备了kinect2代,就想着先用kinect获取深度信息来处理,之后换其他设备只要有深度信息就直接往后推进就行,不过网上教程虽然多,但是第一次总会栽进坑中,记录一波,下回重来的时候长个教训。

  1. 配置参考Kinect SDK
    因为现在很多版本都相对比较(额,过去式吧)这个是关于kinect v2+Windows10+VS2017(博主和微软官网都要求的VS2012或者13,但是我电脑之前配的17,是可以用的)。下载Kinect for Windows SDK2.0, 官网下载 直接安装,安装的时候不需要连接kinect设备,但是安装之后一定要重启电脑(因没有重启,之后一直出现错误)重启,重启,重启!重要的事情说三遍!!!
  2. 重启之后插入kinect USB3.0(接口没有写3.0啊,就是带点蓝色的那个USB),插上电源,就会自动安装驱动。在设备管理器里确定kinect设备已经安装好了,之后在开始处打开我们刚刚安装好的SDK Browser v2.0,但是我这里因为之前没有重启的缘故,在打开Samples C#的时候出现这样的问题,左下角示例,其实解决方案重启下电脑就好,但是自己菜啊!
    Kinect not available
  3. SDK配置成功之后,要自己实现编程的话,要配置下。在之前配置opencv成功的那个项目里继续配置了kinect VS中配置 我的是VS2017版本没得问题
  4. 考虑深度信息,在搜索栏里输入kinect获取深度信息,资料很多,代码也层出不穷。但是很多的都是直接获深度信息图,关于深度数据后面再讨论,这个说几个问题。
    A. 有的代码粘过来会出现“无法打开Nuiapi.h文件”,这是因为你配置的版本是kinect v2,而那个无法打开的文件是v1系列里面的头文件,v2不包含也不是配置的问题了,应该就是不支持,建议换代码 获取深度图代码代码测试可以直接出来深度图,那些黑的地方是无法检测到的位置,噪声还是很明显的。(v1相比于v2更多是调用NUI的方法)
    深度图
    C. 微软上关于kinect v2 的官方文档 官网Kinect v2文档 关于代码中的一些函数接口,在我们打开的SDK Browser v2.0也可以直接get到
    在这里插入图片描述
    D. Kinect Sensor类(属性的功能了解下),代码里主要就是这类在用
    Kinect Sensor类的属性
    E. 关于HRESULE
    百科上的解释:函数返回值。32位,其最高位(bit)如果是0表示成功,1表示错误。具体参见 MSDN(微软开发者网络) 之”Structure of COM Error Codes”说明。我们在程序中如果需要判断返回值,则可以使用比较运算符号;switch开关语句;也可以使用VC提供的宏: HRESULT hr = 调用组件函数;
    返回值判断
    F. 有的代码里有ConvertMat函数,实现转换depth图像到cv::Mat,这是因为
    在这里插入图片描述
    基本都是关于代码,看文档知道有哪些接口怎么用就行
  5. 之前怎么搜索都是直接深度图depth map显示,但我实际上想要获取到深度数据,也就是物体距离传感器的深度值Z,在搜索时选择kinect获取三维坐标
    步骤
    参照代码,直接运行,可以出来深度图,在深度图上点击就可以出现该位置的三维坐标信息
    代码链接
    深度信息获取
    方括号里面是像素坐标x,y,最后一个就是需要的深度Z值,单位是毫米。大小为0的地方,是该位置处侦测不到像素点的深度,同时三维坐标文本信息保存在相应项目文件夹下。要转化为世界坐标系网上也有很多教程,不过考虑到之后要实现的任务,后面可能会考虑用Unity+Kinect获取到场景中的每个像素的深度值,再考虑shader实虚实遮挡的可能性。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145957.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • armv6, armv7, armv7s的区别

    armv6, armv7, armv7s的区别ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,几乎所有手机都是使用它的。armv6,armv7,armv7s是ARMCPU的不同指令集,原则上是向下兼容的。如iPhone4SCPU支持armv7,但它同时兼容armv6,只是使用armv6指令可能无法充分发挥它的特性。同理iPhone5CPU支持armv7s,它虽然也兼容armv7

  • ANT安装、环境变量配置及验证

    ANT安装、环境变量配置及验证一、安装ant到官方主页http://ant.apache.org下载新版(目前为Ant1.8.1)的ant,得到的是一个apache-ant-1.8.1-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.8.1。二、配置环境变量window中设置ant环境变量:ANT_HOME   C:/apache-ant-1.8.1path    

  • pycharm最新激活码2021【2021最新】

    (pycharm最新激活码2021)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • 项目范围管理:项目范围管理的概念是什么_项目范围管理规划案例

    项目范围管理:项目范围管理的概念是什么_项目范围管理规划案例项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程。 项目范围管理关注的焦点是:什么是包括在项目之内的,什么是不包括在项目之内的,即为项目工作明确划定边界。 对项目范围管理和控制的有效性,是衡量项目是否达到成功的一个必要标准,项目范围的管理不仅仅是项目整体管理的一个主要部分,同时在项目中不断地重申项目工作范围,有利于项目不偏离轨道,是项目中实施控制管理的一个主要手段。 项目范围是项目其他各方面管理的基础。如果范围都弄不清楚,成本、进度和质量等就无从谈起。确认项目范围对项目管理有如

  • mysql decimal php,PHP中的MySQL DECIMAL处理

    mysql decimal php,PHP中的MySQL DECIMAL处理如通常讨论的那样(例如Storing0.00001inMySQL),DECIMAL数据类型应用于需要精确度/正确性的字段,例如帐户余额.但是,我想知道PHP如何处理这些值,以及如果它们在内部以浮点数进行处理,那么从数据库读取这些值,进行一些计算并再次写回它们时是否仍然存在问题.如果是这样,我们如何才能迫使PHP保持精度?解决方法:该变量可能是最初在PHP中的字符串(从MySQL结果对象读取时…

  • python数据库操作之sqlalchemy逆向工程

    python数据库操作之sqlalchemy逆向工程依赖安装pipinstallsqlacodegen数据库配置config.pyimportosHOST=’localhost’PORT=3306USERNAME=’root’PASSWORD=’root’DB=’demo’DB_URI=f’mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DB}’#自动生成modelsos.system(f’sqlacodegen{DB_URI}

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号