我想在Viual Studio 2013中通过Windows SDK 2.0从Kinect V2获取深度和RGB数据。所以我写下这些代码:
Runtime.evaluate({expression: 'document.querySelectorAll("*:visible")'})
逻辑上,当我没有将Kinect传感器插入笔记本电脑时,在控制台上应该打印:“找不到传感器”,不是吗?但是,在控制台打印:“找!!!”。有什么问题?
答案 0 :(得分:1)
不,自SDK v2以来,您可以使用KinectStudio调试应用程序,即使没有物理kinect连接到系统。如果要检查实际的Kinect是否已连接,则需要使用传感器本身的IsAvailable
属性。除非您遇到运行时或安装问题,否则GetDefaultKinectSensor
将始终为您提供S_OK
。 GetDefaultKinectSensor
不会检查此流是来自实际的物理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
的实施,并且作为一种良好做法,因此最好在使用之前检查null
。 This is the official answer for your question from the Microsoft