标签: kinect

使用CL NUI Kinect驱动程序,将深度颜色转换为实际相对距离

我正在玩Kinect驱动程序,CL NUI并尝试获取项目的相对深度.

库提供了一种获取表示屏幕上对象深度的图像的方法.这是一个例子:
Kinect深度图像

有没有一种简单的方法可以将像素颜色转换为图像深度?例如,最接近的颜色可以是0的深度,最远的颜色可以是1的深度.

有谁知道这是怎么做到的吗?

我找到了关于如何将深度数据转换为颜色的这些问题,我想要的是反过来:

float RawDepthToMeters(int depthValue)
{
    if (depthValue < 2047)
    {
        return float(1.0 / (double(depthValue) * -0.0030711016 + 3.3309495161));
    }
    return 0.0f;
}

Vec3f DepthToWorld(int x, int y, int depthValue)
{
    static const double fx_d = 1.0 / 5.9421434211923247e+02;
    static const double fy_d = 1.0 / 5.9104053696870778e+02;
    static const double cx_d = 3.3930780975300314e+02;
    static const double cy_d = 2.4273913761751615e+02;

    Vec3f result;
    const double depth = RawDepthToMeters(depthValue);
    result.x = float((x - cx_d) * depth * fx_d);
    result.y …
Run Code Online (Sandbox Code Playgroud)

c# 3d kinect

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

调用Windows放大镜

我正在为C#/ WPF应用程序中的Kinect SDK构建一个手势系统.我想为放大镜放大和缩小添加手势.我更喜欢使用内置的Windows放大镜或其底层逻辑,但任何获得类似效果(多显示器感知)的方法都可以.

如何以编程方式调用Windows放大镜的缩放功能?

到目前为止,我唯一希望找到的是启动过程并通过Win32单击按钮; 但当我这样做时,当我调用放大镜窗口的手柄时,它会拉出一个空白的空窗口.

我通过结合我所知道的C#,一堆Win32 API调用,我真的不太了解,以及大量的Google搜索来修补这些代码.

private void ZoomIn()
{
    // Make sure the Magnifier is running, and get its handle
    if (Process.GetProcesses().Where(p => p.ProcessName.ToLower() == "magnify").Count() == 0) {
        Process.Start("magnify.exe");
        System.Threading.Thread.Sleep(500); }
    IntPtr handle = Process.GetProcesses().Where(p => p.ProcessName.ToLower() == "magnify").First().Handle;

    // Figure out what size ("mode") it's in
    WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
    placement.length = Marshal.SizeOf(placement);
    GetWindowPlacement(handle, ref placement);

    // Move the Magnifier to a predetermined location so we know where to click
    MoveWindow(handle, new Point(0, 0)); …
Run Code Online (Sandbox Code Playgroud)

c# sdk winapi kinect

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

使用SimpleCV库findBlob函数时出现Pygame Segmentation错误

我一直在使用SimpleCV来查找与自动驾驶机器人一起使用的blob.问题是当我在SimpleCV中调用findBlobs命令时.当我完全阻挡Kinect相机的镜头时,PyGame崩溃给我这个错误:

致命的Python错误:( pygame降落伞)分段错误

有时它会起作用,有时甚至会在镜头解锁时崩溃.当我运行超过大约30秒时,它几乎总会崩溃.我已经在SimpleCV中重新安装并修复了许多问题,并尝试重新安装Pygame,它似乎没有任何帮助.另外,我使用X-Box kinect作为我的相机源.我正在使用Ubuntu 11.04.

这是我的确切代码:

from SimpleCV import *
from SimpleCV.Display import *
from time import sleep
k = Kinect()
dis = Display()

while 1:
    depth = k.getDepth()
    depth = depth.invert()
    depth = depth.erode()
    blobs = depth.findBlobs(threshval=127, minsize=10, maxsize=0)
    if blobs:
        blobs.draw()
    depth.save(dis)
    sleep(0)
Run Code Online (Sandbox Code Playgroud)

python pygame segmentation-fault kinect simplecv

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

如何在C#中并行化事件处理程序执行

我有一个Kinect设备,正在使用C#开发一个程序。

为了管理设备,我使用AllFramesReady事件来处理深度和颜色信息。

我创建了一个事件处理程序来处理名为的数据EventHandler1。我在此事件处理程序中进行了大量处理。

我想在名为的第二个事件处理程序中进行更多计算EventHandler2

是否有可能在主进程的2个不同线程上并行运行这2个基本上是2个函数的事件处理程序?如果可能的话,请给我一个示例代码来做这个吗?

c# parallel-processing multithreading kinect

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

检测Kinect中的手指为Windows sdk 1.5 c#

我现在正在检测wpf应用程序中的所有骨架,我想知道如何检测手指与骨骼一起出现?我正在使用microsoft Kinect for windows sdk ver 1.5

非常感谢

c# wpf kinect

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

Kinect操纵骨架数据

我有一个Skeleton skeleton来自这个SkeletonFrameReady活动.而且我有一个在窗户上绘制骷髅的功能,

void DrawSkeleton(Skeleton s),
Run Code Online (Sandbox Code Playgroud)

它以Skeleton作为输入,并将骨架的2D图像绘制到我的窗口.

现在,我想改变右手的x和y值,并使用相同的函数在窗口上绘制它void DrawSkeleton(Skeleton s).

但是,当我尝试做类似的事情时:

skeleton.Joints[JointType.HandRight].Position.X = 3;
Run Code Online (Sandbox Code Playgroud)

它不允许我这样做:

无法修改'Microsoft.Kinect.Joint.Position'的返回值,因为它不是变量.

这可能是因为Position它不是一个变量,是一个属性.

题:

如何复制Skeleton对象并更改该对象上PositionJoints 值.

.net c# kinect

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

Kinect骨架跟踪算法 - 基础

我正在搜索有关骨架跟踪算法如何在Microsoft Kinect上运行的信息.我需要理论基础,而不是使用某些SDK实现骨架跟踪的示例.有没有人有关于它的信息.它对所有SDK(Microsoft SDK,OpenNI,OpenKinect)是否相似,或者取决于它们.我将非常感谢任何信息.

algorithm kinect

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

集成WPF,Unity3D(和Kinect)

我在Visual Studio中创建了一个WPF项目.XAML标记由C#代码隐藏管理.我想要做的是在用户界面上创建一个组件,它将显示一个3D场景.我希望这个3D场景由Unity管理,因为我需要利用Unity的物理引擎.用户必须能够通过Kinect识别的手势(例如抛球)与此3D场景进行交互.

有什么方法可以连接WPF,Unity3D和Kinect,以便用户能够以这种方式操作3D场景吗?如果是这样,你能提供一些示例/教程吗?如果没有,让用户使用Kinect手势操纵3D场景的最佳方法是什么?

c# wpf unity-game-engine physics-engine kinect

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

Kinect:从色彩空间到世界坐标

我正在使用kinect的rgb数据跟踪一个球.在此之后,我查找相应的深度数据.这两项工作都非常出色.现在我想要实际的x,y,z世界坐标(即骨架空间)而不是x_screen,y_screen和深度值.不幸的是,kinect sdk(http://msdn.microsoft.com/en-us/library/hh973078.aspx)提供的方法对我没有帮助.基本上我需要一个函数"NuiImageGetSkeletonCoordinatesFromColorPixel",但我不存在.所有功能基本上都是相反的

我知道这可能是用openNI完成的,但由于其他原因我无法使用它.

是否有一个功能可以为我做这个或我必须自己做转换?如果我必须自己做,我该怎么做?我勾画了一个小图http://i.imgur.com/ROBJW8Q.png - 你认为这会有用吗?

c++ geometry opencv kinect

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

使用KinectV2和OpenCV进行人脸检测

最近我一直在尝试学习OpenCV并尝试使用Haar分类器检测面部.

当我从默认网络摄像头获取视频流时,我成功地检测到了脸部,但是当我使用Kinect而不是默认网络摄像头时,它仍会检测到脸部,但帧速率会大幅下降.

我写的代码是

int main() {
    string haar_face = "F:\haarcascade_frontalface_default.xml";
    CascadeClassifier haar_cascade;
    haar_cascade.load(haar_face);
    if (haar_cascade.empty()) {
        return -1;
    }
    vector<Rect_<int>> faces;
    bool optionKinect = false;
    cout << "Choose Option\n1.) Kinect \n>1.) WebCam\n";
    int choice;
    cin >> choice;
    if (choice == 1) {
        optionKinect = true;
    }   
    if (optionKinect) {
    CKinectStreamsMat* kinectStream = new CKinectStreamsMat();
    kinectStream->initSensor();
        while (true) {
            Mat original, gray;
            Mat face;
            Rect face_i;
            //cap >> original;
            original = kinectStream->getColorFrame();
            if (original.data) {
                cvtColor(original, gray, CV_BGR2GRAY);
                haar_cascade.detectMultiScale(gray, faces);
                int …
Run Code Online (Sandbox Code Playgroud)

c++ opencv kinect

5
推荐指数
0
解决办法
171
查看次数