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实虚实遮挡的可能性。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年5月16日 上午8:40
下一篇 2022年5月16日 上午8:40


相关推荐

  • python中的MRO与多继承

    python中的MRO与多继承相关概念 MRO MethodResolu 即方法解析顺序 是 python 中用于处理二义性问题的算法 nbsp 二义性 python 支持多继承 多继承的语言往往会遇到以下两类二义性的问题 有两个基类 A 和 B A 和 B 都定义了方法 f C 继承 A 和 B 那么调用 C 的 f 方法时会出现不确定 有一个基类 A 定义了方法 f

    2026年3月19日
    2
  • oracle9i配置

    oracle9i配置第 2 章 nbsp Oracle9i 的安装本章将以 Windows 操作系统为例讲述 Oracle9i 数据库的安装 主要内容包括 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 安装前的准备 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp Oracle9i 数据库的安装 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 验证安装成功 2 1 nbsp 安装前的准备 2 1 1 nbsp 安装需求 Oracle 公司推荐在 WindowsNT 和 Windows2000 下安装 Oracle 数据库 并且磁盘

    2026年3月16日
    2
  • rsync(一):基本命令和用法

    rsync(一):基本命令和用法原文地址 https www cnblogs com f ck need u p 7220009 html blog212 1 说在前面的话 rsync 官方网站 https www samba org ftp rsync rsync htmlrsync 是可以实现增量备份的工具 配合任务计划 rsync 能实现定时或间隔同步 配合 inotify 或 sersync 可以实现触发式的实时

    2026年3月26日
    2
  • mysql时区设置_oracle数据库时区设置

    mysql时区设置_oracle数据库时区设置方法一:通过mysql命令行模式下动态修改1.1查看mysql当前时间,当前时区>selectcurtime(); #或selectnow()也可以+———–+|curtime()|+———–+|15:18:10|+———–+>showvariableslike"%time_zone%";+————–…

    2025年8月11日
    5
  • 如何求有向图的拓补序列

    如何求有向图的拓补序列求一个有向图的拓扑序列也是图论的基本题型 但是一般不会显式的看出题意是求拓扑序列或者求是否存在拓扑序列 拓扑序列一般用来判断一个图是否是一个有向无环图 如果一个图存在符合拓扑次序的序列则该图是有向无环图 反之则不是 求拓扑序列步骤 nbsp nbsp 1 找到一个入度为 0 的点作为拓扑序列的第一个点 nbsp nbsp 2 把该点和该点所有的边从图中删去 nbsp nbsp 3 再在新的图中选择一个入度为 0 的点作为拓扑系列

    2026年3月19日
    2
  • linux使用ps命令查看和控制进程_使用ps命令得到当前进程

    linux使用ps命令查看和控制进程_使用ps命令得到当前进程ps命令Linuxps(英文全拼:processstatus)命令用于显示当前进程的状态,类似于windows的任务管理器查看所有进程ps-A显示所有进程信息,连同命令行ps-

    2022年7月30日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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