VisualGestureBuilderDatabase中的Kinect V2异常

时间:2015-05-04 13:39:37

标签: c# kinect kinect-sdk

我们遇到了Kinect V2的问题。 我们使用Google和Microsoft文档来查找解决方案,但我们一无所获。

当我们尝试从数据库加载手势时,我们会收到异常:

private readonly string gestureDatabase = @"Database\ChiMoGestures.gbd";

。 。

    VisualGestureBuilderDatabase database = new VisualGestureBuilderDatabase(this.gestureDatabase)

当程序到达此位置时,它会引发System.InvalidOperationException:

  

Microsoft.Kinect.VisualGestureBuilder.dll中出现未处理的“System.InvalidOperationException”类型异常

     

其他信息:此API已从中返回异常   HRESULT:0x80004005

也许数据库自我不正确,但是我们用VisualgestureBuilder得到了它?

如果有人能解决这个问题,我很高兴吗?

2 个答案:

答案 0 :(得分:2)

不确定这是否相关,因为问题已经很久了,但无论如何我都会回答。

Visual Gesture Builder dll抛出此错误,因为它缺少一些需要工作的文件。具体来说,它需要执行手势识别的两种算法的dll - AdaBoost和RFRProgress。这两个dll位于您的Kinect SDK文件夹下,通常位于:

C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Redist\VGB\x64\vgbtechs

xcopy "$(KINECTSDK20_DIR)Redist\VGB\$(Platform)\vgbtechs" "$(TargetDir)\vgbtechs" /S /R /Y /I

取决于您的平台。

幸运的是,有一种方法可以通过Visual Studio中的Post-build命令自动执行此过程。转到项目 - >属性 - >构建事件 - >编辑后期制作......

并粘贴

    public Schedule Schedule
    {
        get
        {
            return (ContractConsignee == null ? null : ContractConsignee.Schedule);
        }
        set
        {
            if (ContractConsignee == null)
            {
                ContractConsignee = new ContractConsignee(Session);
                ContractConsignee.Assignments.Add(this);
            }
            ContractConsignee.Schedule = value;
        }
    }

这将确保您的Build目录中的dll无论您的平台设置如何。

答案 1 :(得分:0)

除了前面的评论之外,您还必须将数据库添加到项目解决方案中,然后单击解决方案中的数据库并将其复制到输出目录属性设置为始终复制并将构建操作属性设置为内容