2014-12-23 5 views
0

Я работаю над новым приложением, которое может получить доступ к видеопотоку от датчика Kinect V2. У меня есть приложение, работающее со стандартными видеопотоками RGB и Depth ... но я столкнулся с проблемой с потоком IR-видео. Я изменил пример found here в соответствии с моим приложением ... но значения пикселей, которые я возвращаю как часть моего растрового изображения, всегда черные (т.е. значение = 0). Вот часть кода, который я работает в моем MultiSourceFrameArrived обработчика событий:Kinect V2 IR Video Stream

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; 
     } 
    } 

Это еще больше расстраивает, поскольку я не могу запустить это в отладчике. Если я поставлю точку останова в коде, чтобы увидеть, что такое значение Blue pixel (например), отладчик никогда не поймает его (не совсем уверен, почему). Может ли кто-нибудь помочь мне понять, почему значение интенсивности всегда равно 0?

+0

Что вы получаете за 'IRData.Length'? Кажется, вы никогда не прыгаете в свой цикл 'for'. Поэтому первое мое предположение заключается в том, что 'IRData.Length = 0' – Adjit

+0

IRData.Length возвращает значение 217088 ... что имеет смысл, поскольку разрешение разрешения ИК-камеры камеры (согласно этому сайту: http: // pterneas .com/2014/02/08/kinect-for-windows-version-2-overview /) - 512 x 424 = 217088 ... поэтому я думаю, что он попадает в цикл for. – andyopayne

ответ

0

Похоже, что проблема произошла из-за устаревшей графической карты. Смотрите эту тему: Kinect Infrared Camera Not working. У меня есть относительно новый ноутбук, но как только я обновил свои драйверы Nvidia, теперь он работает.