标签: kinect

使用 opencv 为灰度图像着色

我正在将 openNI 用于一些带有 kinect 传感器的项目。我想为深度图给出的用户像素着色。现在我有从白色到黑色的像素,但我想要从红色到黑色。我尝试过 alpha 混合,但我的结果只是我有从粉红色到黑色的像素,因为我添加了(使用 addWeight)红色+白色 = 粉红色。

这是我的实际代码:

layers = device.getDepth().clone();
cvtColor(layers, layers, CV_GRAY2BGR);

Mat red = Mat(240,320, CV_8UC3, Scalar(255,0,0));
Mat red_body; // = Mat::zeros(240,320, CV_8UC3);
red.copyTo(red_body, device.getUserMask());

addWeighted(red_body, 0.8, layers, 0.5, 0.0, layers);
Run Code Online (Sandbox Code Playgroud)

其中 device.getDepth() 返回带有深度图的 cv::Mat 并且 device.getUserMask() 返回带有用户像素(仅白色像素)的 cv::Mat

一些忠告?

编辑:还有一件事:多亏了sammy 的回答,我已经做到了。但实际上我没有完全从 0 到 255 的值,而是从(例如)123-220。

我将通过一个简单的 for 循环找到最小值和最大值(有更好的方法吗?),以及如何将我的值从 min-max 映射到 0-255 ?

opencv colors kinect

5
推荐指数
1
解决办法
7298
查看次数

Kinect:如何从一些深度数据中获取骨架数据(从kinect开始,但我修改了一些地方)

我可以从我的Kinect获取深度帧,然后修改帧中的数据.现在我想使用修改后的深度帧来获取骨架数据.我该怎么做?

depth kinect

5
推荐指数
1
解决办法
1883
查看次数

如何在 Mac 上安装 OpenNI 2.1?

我找不到这个版本的 OpenNI 的安装说明。我有一个适用于 Windows 和 Mac OSX 10.8 的 Kinect。

它在OpenNI.org上列为可下载的,但该站点上没有安装说明(我可以找到)并且OpenNI2 Github 页面没有适用于 Mac 的说明。

所以,我尝试下载存储库并运行:

sudo ./install.sh
Run Code Online (Sandbox Code Playgroud)

与以前的版本一样。我没有得到任何回应,只是提示回来。当我跑

./Tools/NiViewer
Run Code Online (Sandbox Code Playgroud)

我得到

openDevice failed:
DeviceOpen using default: no devices found

Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

kinect openni

5
推荐指数
1
解决办法
8588
查看次数

Kinect 红外视图是否与 Kinect 深度视图有偏移

我正在使用红外视图和深度视图进行 Kinect 项目。在红外视图中,使用 CVBlob 库,我能够提取一些二维兴趣点。我想找到这些二维点的深度。所以我想我可以直接使用深度视图,像这样:

coordinates3D[0] = coordinates2D[0];
coordinates3D[1] = coordinates2D[1];
coordinates3D[2] = (USHORT*)(LockedRect.pBits)
[(int)coordinates2D[1] * Width + (int)coordinates2D[0]] >> 3;
Run Code Online (Sandbox Code Playgroud)

我认为这不是获得深度的正确公式。我能够在深度视图中可视化感兴趣的 2D 点。如果我在红外视图中得到一个点 (x, y),然后我将它绘制为深度视图中 (x, y) 处的一个红点,
我注意到红点不在我期望的位置(在一个物体上) )。他们的位置存在系统性错误。

我认为深度视图和红外视图具有一一对应的关系,这与彩色视图和深度视图之间的对应关系不同。
这确实是真的还是 IR 和深度视图之间存在偏移?如果有偏移,我能以某种方式获得正确的深度值吗?

opencv kinect

5
推荐指数
1
解决办法
3675
查看次数

通过处理控制 Kinect 电机

我正在使用一些简单的基于 openni 的处理应用程序来破解 Kinect,我打算很快发表一个演讲,我发现了一个似乎可以控制电机的 API。有一个 moveKinect 方法似乎已添加到主 ContextWrapper 界面,但我似乎无法让它工作。查看 svn 历史和发行说明,它似乎是去年添加的,并附有说明它不适用于最新驱动程序(5.1.02,Linux64)的说明。我试过调用该方法以提供度数和弧度值,但没有任何反应。我没有错误,也没有动作。有没有其他人玩过这个?我正在运行第二个到最新的处理 2.0 版本(处理 2.0.1 的链接不起作用)和我可以下载的最新 SImpleOpenNI 包。

processing kinect simple-openni

5
推荐指数
1
解决办法
908
查看次数

将 kinects 深度转换为 RGB

我正在使用 OpenNI 和 OpenCV(但没有支持 openni 的最新代码)。如果我只是将深度通道发送到屏幕 - 它会看起来很暗并且难以理解。所以我想以一种颜色为用户显示一个深度通道,但无法找到如何在不损失准确性的情况下做到这一点。现在我这样做:

xn::DepthMetaData xDepthMap;
depthGen.GetMetaData(xDepthMap);
XnDepthPixel* depthData = const_cast<XnDepthPixel*>(xDepthMap.Data());
cv::Mat depth(frame_height, frame_width, CV_16U, reinterpret_cast<void*>(depthData));

cv::Mat depthMat8UC1;
depth.convertTo(depthMat8UC1, CV_8UC1);

cv::Mat falseColorsMap;
cv::applyColorMap(depthMat8UC1, falseColorsMap, cv::COLORMAP_AUTUMN);
depthWriter << falseColorsMap;
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我得到的输出比 Windows 的 kinects 软件显示的更糟糕(丢失细节)。所以我正在寻找 OpenNI 或 OpenCV 中具有更好转换的函数。

opencv kinect openni

5
推荐指数
1
解决办法
2619
查看次数

将 kinect RGB 和深度值转换为 XYZ 坐标

我正在寻找一种使用 MATLAB 将 kinect RGB 和深度值转换为 XYZ 坐标的简单方法。我的目标是一个函数,其输入为:Kinect相机拍摄的每个点的 RGB 和深度值,以及每个点的 x、y 和 z 值的输出。

[RGB,深度] = RGB_D2XYZ(XYZ)

谢谢,本

matlab color-depth coordinates kinect

5
推荐指数
1
解决办法
4477
查看次数

当我们在OpenCV中有深度和rgb Mat时如何显示3D图像(从Kinect捕获)

我们使用Kinect和OpenNI Library捕获了一个3D图像,并使用此代码以OpenCV Mat的形式获得了rgb和深度图像.

    main()
{
    OpenNI::initialize();
    puts( "Kinect initialization..." );
    Device device;
    if ( device.open( openni::ANY_DEVICE ) != 0 )
    {
        puts( "Kinect not found !" ); 
        return -1;
    }
    puts( "Kinect opened" );
    VideoStream depth, color;
    color.create( device, SENSOR_COLOR );
    color.start();
    puts( "Camera ok" );
    depth.create( device, SENSOR_DEPTH );
    depth.start();
    puts( "Depth sensor ok" );
    VideoMode paramvideo;
    paramvideo.setResolution( 640, 480 );
    paramvideo.setFps( 30 );
    paramvideo.setPixelFormat( PIXEL_FORMAT_DEPTH_100_UM );
    depth.setVideoMode( paramvideo );
    paramvideo.setPixelFormat( PIXEL_FORMAT_RGB888 );
    color.setVideoMode( paramvideo );
    puts( "Réglages des …
Run Code Online (Sandbox Code Playgroud)

opengl opencv kinect openni point-cloud-library

5
推荐指数
2
解决办法
4173
查看次数

如何在一维数组中找到峰值

我正在用 python 读取一个 csv 文件并从中准备一个数据帧。我有一个 Microsoft Kinect,它正在记录手臂绑架练习并生成这个 CSV 文件。

我有这个ElbowLeft 关节的 Y 坐标数组。您可以在此处将其形象化。现在,我想提出一个解决方案,该解决方案可以计算此数组中的峰值或局部最大值的数量。

有人可以帮我解决这个问题吗?

python arrays numpy kinect

5
推荐指数
2
解决办法
1万
查看次数

有没有人知道如何使用Kinect深度图创建2D骨架?

我目前正在使用Processing Kinect库来提供深度图.如果可能的话,我想知道如何将其用于创建2D骨架.这里没有寻找任何代码,只是我可以用来实现这些结果的一般过程.

另外,鉴于到目前为止我们已经在几个Kinect游戏中看到了这一点,难以同时运行多个骷髅吗?

kinect

4
推荐指数
1
解决办法
1791
查看次数