C ++代码:查找Kinect传感器时出现逻辑错误

时间:2017-07-07 17:29:19

标签: c++ visual-studio kinect-sdk kinect-v2

我想在Viual Studio 2013中通过Windows SDK 2.0从Kinect V2获取深度和RGB数据。所以我写下这些代码:

Runtime.evaluate({expression: 'document.querySelectorAll("*:visible")'})

逻辑上,当我没有将Kinect传感器插入笔记本电脑时,在控制台上应该打印:“找不到传感器”,不是吗?但是,在控制台打印:“找!!!”。有什么问题?

1 个答案:

答案 0 :(得分:1)

不,自SDK v2以来,您可以使用KinectStudio调试应用程序,即使没有物理kinect连接到系统。如果要检查实际的Kinect是否已连接,则需要使用传感器本身的IsAvailable属性。除非您遇到运行时或安装问题,否则GetDefaultKinectSensor将始终为您提供S_OKGetDefaultKinectSensor不会检查此流是来自实际的物理kinect传感器还是来自KinectStudio。

以下是我项目的代码段。如果您想了解更多关于Kinect的示例,请在github https://github.com/shanilfernando/VRInteraction中参考我的项目或在这里发表评论。我很乐意帮助你。

 HRESULT CDepthBasics::InitializeDefaultSensor()
    {
        HRESULT hr;

        hr = GetDefaultKinectSensor(&m_pKinectSensor);
        if (FAILED(hr))
        {
            return hr;
        }

        if (m_pKinectSensor)
        {
            if (SUCCEEDED(hr))
            {
                hr = m_pKinectSensor->get_CoordinateMapper(&m_pCoordinateMapper);
            }
            if (SUCCEEDED(hr))
            {
                hr = m_pKinectSensor->Open();
            }

            if (SUCCEEDED(hr))
            {
                hr = m_pKinectSensor->OpenMultiSourceFrameReader(
                    FrameSourceTypes::FrameSourceTypes_Depth | FrameSourceTypes::FrameSourceTypes_Color | FrameSourceTypes::FrameSourceTypes_Body | FrameSourceTypes::FrameSourceTypes_BodyIndex,
                    &m_pMultiSourceFrameReader);
            }


        }

        if (!m_pKinectSensor || FAILED(hr))
        {
            std::cout << "No ready Kinect found!" << std::endl;
            return E_FAIL;
        }
        else
        {
            std::cout << "Kinect found!" << std::endl;
        }

        return hr;
    }

https://github.com/shanilfernando/VRInteraction/blob/master/DepthBasics.cpp

修改

我没有使用IsAvailable因为它对我来说无关紧要。有时我使用KinectStudio来获取流,而Kinect不在我身边。我说GetDefaultKinectSensor将返回S_OK,除非您遇到运行时或安装问题,我没有说GetDefaultKinectSensor总会给您一个有效的m_pKinectSensor。由于我们无法访问GetDefaultKinectSensor的实施,并且作为一种良好做法,因此最好在使用之前检查nullThis is the official answer for your question from the Microsoft