标签: kinect

将Kinect的v2.0 Motion存储到BVH文件中

我想将Kinect 2中的动作捕捉数据存储为BVH文件.我找到了Kinect 1的代码,可以在这里找到.我查看了代码,发现了一些我无法理解的内容.例如,在上面提到的代码中,我试图理解skel在代码中的几个地方找到的Skeleton 对象到底是什么.如果没有,是否有任何已知的应用程序可用于完成预期的?

编辑:我试图将Skeleton skel更改为Body skel,我认为它是kinect SDK 2.0的对应对象.但是,当我试图获得身体的位置时,我遇到了错误:

tempMotionVektor[0] = -Math.Round( skel.Position.X * 100,2);
tempMotionVektor[1] = Math.Round( skel.Position.Y * 100,2) + 120;
tempMotionVektor[2] = 300 - Math.Round( skel.Position.Z * 100,2);
Run Code Online (Sandbox Code Playgroud)

调用Body skel的函数Position时,我遇到了错误.如何在sdk 2.0中检索骨架的X,Y,Z?我试图将以上三行更改为:

tempMotionVektor[0] = -Math.Round(skel.Joints[0].Position.X * 100, 2);
tempMotionVektor[1] = Math.Round(skel.Joints[0].Position.Y * 100, 2) + 120;
tempMotionVektor[2] = 300 - Math.Round(skel.Joints[0].Position.Z * 100, 2);
Run Code Online (Sandbox Code Playgroud)

编辑:基本上我设法在bodyBasicsWPF和kinect2bvh组合后存储一个bvh文件.然而,似乎我存储的骨架效率不高.肘部有奇怪的动作.我想知道我是否必须更改文件kinectSkeletonBVH.cp中的内容.更具体地说,kinect 2版本的关节轴方向的变化是什么.如何更改以下行:skel.BoneOrientations[JointType.ShoulderCenter].AbsoluteRotation.Quaternion; 我尝试更改该行skel.JointOrientations[JointType.ShoulderCenter].Orientation.我对吗?我使用以下代码将关节添加到BVHBone对象:

BVHBone hipCenter = new BVHBone(null, JointType.SpineBase.ToString(), 6, TransAxis.None, true);
BVHBone hipCenter2 = …
Run Code Online (Sandbox Code Playgroud)

c# motion-detection kinect

297
推荐指数
1
解决办法
9538
查看次数

官方Kinect SDK与开源替代品

他们在哪里有所不同?

选择libfreenect或OpenNI + SensorKinect有什么好处,例如,官方SDK,反之亦然?

有什么缺点?

kinect

59
推荐指数
2
解决办法
3万
查看次数

Kinect横向骨架跟踪

目前我使用Microsoft Kinect测量关节之间的角度.大多数测量都正常工作.每当一个人侧身坐在椅子上(在椅子上)时,Kinect就不会准确地跟踪骨架.为了说明我的问题,我添加了3张Kinect深度视图的图片.

使用骨架跟踪进行侧向测量

在没有骨架跟踪的情况下进行侧向测量

使用骨架跟踪进行侧向测量

正如您所看到的,3个测量中有2个"正确"工作.每当我抬起腿时,Kinect都会正确地停止骨骼跟踪.有没有人能解决这个问题,或者这只是Kinect的限制?

谢谢.

更新1:JointTrackingState-Enumeration在屏幕截图2对这些跟踪关节所示被标记为Inferred,然而深度视图正在跟踪我的全身.

更新2: 截图2我试图跟踪我的前腿,突出显示为绿色.我知道另一条腿没有跟踪但是这没关系,我想.

更新3: 以下代码选择骨架:

private Skeleton StickySkeleton(Skeleton[] skeletons)
{
    if (skeletons.Count<Skeleton>(skeleton => skeleton.TrackingId == _trackedSkeletonId) <= 0)
    {
        _trackedSkeletonId = -1;
        _skeleton = null;
    }

    if (_trackedSkeletonId == -1)
    {
        Skeleton foundSkeleton = skeletons.FirstOrDefault<Skeleton>(skeleton => skeleton.TrackingState == SkeletonTrackingState.Tracked);

        if (foundSkeleton != null)
        {
            _trackedSkeletonId = foundSkeleton.TrackingId;
            return foundSkeleton;
        }
    }

    return _skeleton;
}
Run Code Online (Sandbox Code Playgroud)

每当跟踪骨架时,数据将用于绘制关节点并计算关节之间的角度.

更新4: 我测试坐在一个"块",比椅子简化得多.不幸的是,Kinect的行为仍然相同.

以下2个截图:

坐在街区1

坐在一个街区2

c# kinect

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

kinect深度相机的精度

kinect中的深度相机有多精确?

  • 范围?
  • 解析度?
  • 噪声?

特别是我想知道:

  • 微软是否有任何关于它的官方规范?
  • 有关于这个问题的科学论文吗?
  • TechBlogs的调查?
  • 个人实验很容易重现?

我现在正在收集大约一天的数据,但大多数作者都没有说出他们的来源,而且价值似乎差别很大......

depth kinect

38
推荐指数
4
解决办法
4万
查看次数

覆盆子Pi与Kinect

任何人都可以使用Raspberry Pi从Kinect获取相机数据吗?

我们想用无线Kinect使用以太网或WiFi连接它.否则,如果您有替代方案,请告诉我.

kinect raspberry-pi

36
推荐指数
3
解决办法
6万
查看次数

使用System.Speech和Kinect

我正在为大学项目开发​​一个原型演讲文本字幕应用程序.我将在我的项目中使用手势识别,所以我认为使用Kinect作为麦克风源是一个好主意,而不是使用额外的麦克风.我的应用的想法是识别自发的演讲,如长而复杂的句子(我明白,语音听写不会是完美的).我看过许多Kinect语音示例,它引用了Microsoft.Speech,但没有引用System.Speech.由于我需要训练语音引擎并将DictationGrammar加载到语音识别引擎中,因此Microsoft.Speech是我的唯一选择.

我已经设法使用Kinect作为直接麦克风音频源,但由于我正在加载Kinect进行视频预览和手势识别,我无法将其作为直接麦克风访问.

这是直接访问麦克风而无需加载Kinect硬件进行手势等的代码,并且工作正常:

private void InitializeSpeech()
{
    var speechRecognitionEngine = new SpeechRecognitionEngine();
    speechRecognitionEngine.SetInputToDefaultAudioDevice();
    speechRecognitionEngine.LoadGrammar(new DictationGrammar());
    speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
    speechRecognitionEngine.SpeechRecognized += (s, args) => MessageBox.Show(args.Result.Text);
}
Run Code Online (Sandbox Code Playgroud)

这是我需要在加载后通过Kinect访问访问源的地方,它根本没有做任何事情.我想这样做:

using (var audioSource = new KinectAudioSource())
{
    audioSource.FeatureMode = true;
    audioSource.AutomaticGainControl = false;
    audioSource.SystemMode = SystemMode.OptibeamArrayOnly;

    var recognizerInfo = GetKinectRecognizer();
    var speechRecognitionEngine = new SpeechRecognitionEngine(recognizerInfo.Id);

    speechRecognitionEngine.LoadGrammar(new DictationGrammar());
    speechRecognitionEngine.SpeechRecognized += (s, args) => MessageBox.Show(args.Result.Text);

    using (var s = audioSource.Start())
    {
        speechRecognitionEngine.SetInputToAudioStream(s, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null));
        speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以问题是,是否可以使用System.Speech而不是Microsoft.Speech与当前的Kinect SDK,以及我在第二个代码示例中做错了什么?

GetKinectRecognizer方法

private static …
Run Code Online (Sandbox Code Playgroud)

.net c# audio kinect system.speech.recognition

30
推荐指数
1
解决办法
5824
查看次数

无法在Microsoft Visual Studio中打开Windows.h

首先:我正在使用Microsoft Visual Studio 2012

我是C#/ Java开发人员,现在我正在尝试使用Microsoft SDK和C++为kinect编程.所以我开始使用Color Basics示例,我无法编译它.起初,没有一个类能够找到Windows.h. 所以我安装了(或者重新安装,我不确定)Windows SDK,并将SDK的include目录添加到项目的包含"路径"中.然后所有问题都消失了,除了一个:

Error   5   error RC1015: cannot open include file 'windows.h'. C:\temp\ColorBasics-D2D\ColorBasics.rc  17  1   ColorBasics-D2D
Run Code Online (Sandbox Code Playgroud)

这就是错误.没有理由,系统可以找到它,因为它被用在多个其他文件中,只有这个文件无法使用它.作为参考,整个文件是bugging(ColorBasics.rc):

//------------------------------------------------------------------------------
// <copyright file="ColorBasics-D3D.rc" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || …
Run Code Online (Sandbox Code Playgroud)

c++ windows visual-studio kinect

30
推荐指数
4
解决办法
15万
查看次数

Kinect模式识别

我买了一个Kinect在我的电脑上玩C#.(编程真有趣!)

我正在使用CLNUIDevice.dll从Kinect获取深度图像.这工作正常,我能够通过图像中的RGB值读取深度.

现在我想知道哪些库可以做不同类型的识别.我见过手识别,人脸识别,骨骼,情感,物体等.

图像处理库不一定是Kinect(虽然这样会很好)而且它们不一定是.Net(虽然这样会很好).例如:任何对象跟踪库都可以工作,但如果它可以正确使用Kinect的3D热图,它将更好地工作.

.net c# algorithm image-processing kinect

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

将Kinect音频与视频匹配

我有一个使用Kinect处理视频会议的项目(或者更可能是其中四个).现在,我的公司为我们的VTC房间使用这些价格昂贵的相机.希望是,将几个Kinects联系在一起,我们可以降低成本.计划是让其中四个/五个覆盖180度弧线,这样Kinects就可以看到整个房间/桌子(仍然比我们现有的相机便宜很多!).应用程序将根据桌面上的对象选择来自Kinect的视频流.计划在理论上很好,但我遇到了障碍.

据我所知,没有办法分辨哪个麦克风阵列与Kinect Runtime对象相对应.我可以使用以下方法获取表示每个Kinect的对象:

Device device = new Device();
Runtime[] kinects = new Runtime[device.Count];
for( int i = 0; i < kinects.Length; i ++ )
    kinects[i] = new Runtime(i);
Run Code Online (Sandbox Code Playgroud)

每个麦克风阵列使用:

var source = new KinectAudioSource();
IEnumerable<AudioDeviceInfo> devices = source.FindCaptureDevices();
foreach( AudioDeviceInfo in device in devices)
{
    KinectAudioSource devSpecificSource = new KinectAudioSource();
    devSpecificSource.MicrophoneIndex = (short)device.DeviceIndex;
}
Run Code Online (Sandbox Code Playgroud)

但是我找不到任何方法可以知道运行时A对应于KinectAudioSource B.对于我正在使用的两个Kinect来说这不是一个大问题(我只是想猜哪个是哪个,如果它们错了就转换它们) ,但是当我们获得四到五个Kinects时,我不希望每次应用程序运行时都需要进行任何类型的校准.我已经考虑过假设Runtime和KinectAudioSource对象的顺序相同(运行时索引0对应于设备中的第一个AudioDeviceInfo),但这似乎有风险.

所以,问题是:有没有办法将Runtime对象与其KinectAudioSource匹配?如果没有,是否保证它们的顺序正确,那么我可以将Runtime 0与设备中的第一个KinectAudioSource麦克风索引相匹配?

更新: 最后猛烈抨击WPF的单线程公寓要求和Kinect音频的多线程公寓要求足以使两者一起行动.问题是,据我可以告诉,Kinect的运行对象和KinectAudioSources的顺序都没有排队.我在一个相当响亮的实验室(我是......可能是房间内的40名实习生之一),所以很难测试,但我很确定订单已经切换为我插入的两个Kinects.我有两个Runtime对象和两个KinectAudioSource对象.当第一个KinectAudioSource报告声音直接来自它前面时,我实际上站在与第二个Runtime对象关联的Kinect前面.所以不能保证两者的订单排成一行.现在,重复一下这个问题:如何将KinectAudioSource对象与Nui.Runtime对象进行匹配?现在,我只挂了两个Kinect,但由于目标是四个或五个......我需要一个具体的方法来做到这一点.

更新2: 带回我工作的两个Kinects回家玩.三个Kinects,一台电脑.有趣的东西(实际上很难将它们全部安装到一起,其中一个视频源似乎没有工作,所以我现在回到2).musefan的回答让我希望我错过了AudioDeviceInfo对象中的一些内容,这些内容可以解释这个问题,但没有运气.我在运行时对象中找到了一个名为NuiCamera.UniqueDeviceName的有趣外观字段,但我在AudioDeviceInfo中找不到该字段和任何内容之间的任何链接.

这些字段的输出,希望Sherlock Holmes看到线程并注意到连接:

Console.WriteLine("Nui{0}: {1}", i, nuis[i].NuiCamera.UniqueDeviceName);
//Nui0: USB\VID_0409&PID_005A\6&1F9D61BF&0&4
//Nui1: USB\VID_0409&PID_005A\6&356AC357&0&3

Console.WriteLine("AudioDeviceInfo{0}: {1}, {2}, {3}", audios.IndexOf(audio), …
Run Code Online (Sandbox Code Playgroud)

c# kinect

28
推荐指数
1
解决办法
2426
查看次数

如何在XAML public中创建一个控件,以便在其他类中看到

我在wpf应用程序中工作,我在XAML中创建了一个复选框,然后我的代码在一个类中调用一个函数,在这个函数中有一个if条件,它检查复选框是否被选中但是没有看到复选框在这堂课上,怎么做呢?

非常感谢

编辑:

这是我做的步骤:我在KinectSkeleton的同一项目下创建了ViewModel类,如下所示:ViewModel类:

public class ViewModel
{
    public bool IsChecked { get; set; }
    public bool is_clicked { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在KinectSkeleton中我定义了一个属性,如下所示:

public static readonly DependencyProperty ViewModelProperty =
           DependencyProperty.Register("ViewModelH", typeof(ViewModel), typeof(KinectSkeleton), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));


public ViewModel ViewModelH
{
    get
    {
        return (ViewModel)GetValue(ViewModelProperty);
    }
    set
    {
        SetValue(ViewModelProperty, value);
    }
}
Run Code Online (Sandbox Code Playgroud)

并且KinectWindow.xaml中的复选框和按钮的代码是:

<Button Content="Calibrate" Height="24" x:Name="Calibrate" x:FieldModifier="public" Width="90" Click="Calibrate_Click" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Left" DockPanel.Dock="Left" Panel.ZIndex="0" Padding="0" VerticalAlignment="Center" />
<CheckBox IsChecked="{Binding Mode=TwoWay, Path=IsChecked}" Content="AngleDifference" Height="22" x:Name="AngleDifference" x:FieldModifier="public" Width="117" Checked="AngleDifference_Checked" Unchecked="AngleDifference_Unchecked" HorizontalAlignment="Left" VerticalAlignment="Center" …
Run Code Online (Sandbox Code Playgroud)

c# wpf checkbox xaml kinect

27
推荐指数
2
解决办法
3万
查看次数