c# - Kinectv2 - 如何从 kinect fusion explorer 中删除深度颜色 - wpf 示例 c#?
问题描述
我有一个 Kinect v2 的项目。我已经从 kinect sdk 下载了 kinect fusion explorer - wpf example。在这个例子中,我得到了一个像图片中左边的网格。我想得到正确的,没有颜色。有没有人可以给我建议,可以帮助我弄清楚该怎么做?我只想从流中删除深度颜色。
解决方案
在这个示例中,体素的着色是通过将包含每个体素的 X、Y、Z 坐标的向量乘以矩阵 来完成的worldToBGRTransform
。
默认矩阵将 X 映射到蓝色,将 Y 映射到绿色,将深度映射到 R,并在 X 和 Y 上发生一些变化(我不太了解那部分)。
要使输出变为灰色,您必须映射颜色以使 RG 和 B 设置相同。
例如,您可以编辑worldToBGRTransform
如下设置(MainWindows.xaml.cs
第 2893 行):
this.worldToBGRTransform = Matrix4.Identity;
this.worldToBGRTransform.M11 = 0.5f * this.voxelsPerMeter / this.voxelsX;
this.worldToBGRTransform.M12 = 0.5f * this.voxelsPerMeter / this.voxelsX;
this.worldToBGRTransform.M13 = 0.5f * this.voxelsPerMeter / this.voxelsX;
this.worldToBGRTransform.M21 = 0.5f * this.voxelsPerMeter / this.voxelsY;
this.worldToBGRTransform.M22 = 0.5f * this.voxelsPerMeter / this.voxelsY;
this.worldToBGRTransform.M23 = 0.5f * this.voxelsPerMeter / this.voxelsY;
this.worldToBGRTransform.M31 = this.voxelsPerMeter / this.voxelsZ;
this.worldToBGRTransform.M32 = this.voxelsPerMeter / this.voxelsZ;
this.worldToBGRTransform.M33 = this.voxelsPerMeter / this.voxelsZ;
推荐阅读
- python - 在 multiprocessing 和不使用 multiprocessing.Pool 之间切换的简单方法?
- laravel - 将控制器中的数据字段用于另一个 crud
- java - 异常处理执行流程
- python - 如何在具有 numpy 数组的列的数据框中删除重复项?
- c# - 需要从 C# 调用 C++ dll
- laravel - 如何链接两个多对多雄辩的laravel
- wordpress - 如何在我的 wordpress 插件上为图像创建文件夹目录?
- c# - 如何通过包含表单数据但不单击提交按钮的 ajax 将视图模型发送到控制器
- hyperledger-fabric - Hyperledger Fabric Q
- elixir - utc_datetime 的 Proto3 Elixir 正确类型