我正在研究一种可以从Kinect V2传感器访问视频流的新应用程序。我已经让应用程序使用标准的RGB和深度视频流...但我遇到了IR视频流的问题。我修改了示例found here以适应我的应用程序...但我作为位图的一部分返回的像素值始终为黑色(即.value = 0)。这是我在MultiSourceFrameArrived事件处理程序中运行的代码部分:
using (InfraredFrame IRFrame = framew.InfraredFrameReference.AcquireFrame())
{
if (IRFrame != null)
{
FrameDescription FrameDesc = IRFrame.FrameDescription;
ushort[] IRData = new ushort[FrameDesc.Width * FrameDesc.Height];
IRImgBuffer = new byte[4 * FrameDesc.Width * FrameDesc.Height];
IRFrame.CopyFrameDataToArray(IRData);
int colorIndex = 0;
for (int IRIndex = 0; IRIndex < IRData.Length; ++IRIndex)
{
ushort depth = IRData[IRIndex];
ushort ir = IRData[IRIndex];
byte intensity = (byte)(ir >> 8);
IRImgBuffer[colorIndex++] = (byte)ir; // Blue
IRImgBuffer[colorIndex++] = (byte)ir; // Green
IRImgBuffer[colorIndex++] = (byte)ir; // Red
++colorIndex;
}
gotframe = true;
}
}
因为我似乎无法在调试器中启动它,所以更令人沮丧。如果我在代码中放置一个断点来查看蓝色像素值(例如)是什么 - 调试器似乎永远不会捕获它(不完全确定原因)。任何人都可以帮助我理解为什么强度值总是0?
答案 0 :(得分:0)
由于图形卡过时,问题似乎正在发生。请参阅此主题:Kinect Infrared Camera Not working。我有一台相对较新的笔记本电脑,但是一旦我更新了我的Nvidia驱动程序,它现在似乎正在运行。