首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用Kinect和opencv组合和显示深度和rgb图像

如何利用Kinect和opencv组合和显示深度和rgb图像
EN

Stack Overflow用户
提问于 2015-03-22 15:29:32
回答 1查看 2.7K关注 0票数 4

我们正在使用kinect和opencv做一个项目。我对3D分析完全陌生。主要目的是从kinect中获取深度和rgb信息,对rgb mat (基本滤波和阈值函数)进行处理,并将处理后的rgb图像与原始的深度信息结合起来。我需要一些基本步骤来遵循合适的应用程序( opencv、opengl、openni、kinect sdk等)。

1)如何将深度和rgb信息从kinect传递给opencv?

2)我们能单独访问rgb图像来处理它吗?

3)如何将两者结合起来,使用哪些功能来显示输出?

我们使用Windows64位和kinect作为3D传感器。我们计划使用OpenNI获取图像rgb和深度信息,然后在OpenCV中处理rgb,然后借助OpenGL在窗口中显示图像(已处理的RGB +深度)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-22 22:09:48

首先,我认为您的问题过于笼统,它将取决于您使用的库/驱动程序.例如,如果使用openni,则以一种方式传递信息,如果使用kinect sdk,则必须使用另一种方法.

2)是的,您可以独立于深度信息访问RGB图像并对其进行处理。

3)要将两者结合起来,我想你指的是深度和rgb。这也取决于您使用的库和驱动程序。还有你想要存储它的方式,例如点云,图像,等等。

我的建议是准确地定义您想要实现的目标、使用哪个库和在哪个操作系统中,并编辑您的问题。

我使用openni2、opencv和Qt创建了一个工具,我只在linux相机和structure.io摄像机上进行了测试,但您可能会知道应该做什么。该工具可以对不同格式(pcd、图像、oni)的数据进行基本的阈值处理和存储。链接

我还对openni1、Avin的驱动程序和Kinect1摄像头使用了几乎相同的方法,周三我可以上传代码,您可以查看一下,但基本上是一样的,只是初始化发生了一些变化。

作为您在处理RGB图像时应该做的事情的基本清单:

  • 初始化摄像机流
  • 在opencv中创建一个矩阵并将数据直接复制到它,确保读取库的标准,例如,openni使用RGB数组作为颜色矩阵,而KinectSDK使用RGBA (至少kinect SDK2.0)。还要确保深度矩阵是16位。
  • 若要显示深度矩阵,必须将其规范化并将其更改为灰度矩阵。
  • 您可以对图像进行任何操作,然后以欲望格式保存它们。
  • 查看我给您的链接,看看如何以最常见的格式保存它。

此外,您还可以查看pointcloud,它们有一个很好的包装器,可以完成这项工作,然后很容易将它转换为点云。

我希望这些信息对你有帮助。

更新:对于windows 1,可以在不安装其他驱动程序的情况下安装最新的Kinect SDK并使用openni2。

  • 只需安装Kinect SDK1.8(而不是2.0)
  • 安装Openni2
  • 运行NiViewer.exe以测试它是否工作(它位于openni文件夹中)

如果到目前为止一切都很好,那么您只需要:

  • 初始化openni
  • 初始化颜色和深度流
  • 做一个主循环,您将它复制到一个OpenCV垫(您可以使用我的代码看一个例子,我的意思)
  • 要对rgb图像进行任何处理吗?
  • 为3D显示/操作创建一个点云,为此,我推荐,因为创建点云很容易,而且他们已经为其提供了一个显示。

如果您在任何步骤中有疑问,我可以给您提供代码片段,只需问一个新的问题,我就会回答它。

我希望这对你有帮助

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29196184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档