2014-12-23 2 views
0

Kinect V2 센서에서 비디오 스트림에 액세스 할 수있는 새로운 응용 프로그램을 개발 중입니다. 표준 RGB 및 깊이 비디오 스트림을 사용하는 응용 프로그램을 가지고 있지만 IR 비디오 스트림 문제가 있습니다. 내 응용 프로그램에 맞게 예제 found here을 수정했습니다 ...하지만 내 비트 맵의 ​​일부로 반환하는 픽셀 값은 항상 검은 색입니다 (예 : 값 = 0).Kinect V2 IR 비디오 스트림

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

그것은 더욱 실망 내가 디버거에서이 작업을 시작하는 것 같지 수있다 : 여기 내 MultiSourceFrameArrived 이벤트 처리기에서 실행 한 코드의 일부이다. 코드에 중단 점을 넣어 파란색 픽셀 값 (예 :)이 무엇인지 확인하면 디버거가 결코 그것을 잡을 수 없을 것입니다. 아무도 강도 값이 항상 0 인 이유를 이해하도록 도와 줄 수 있습니까?

+0

'IRData.Length'에 대해 무엇을 얻습니까? 마치'for' 반복문으로 뛰어 들지 않는 것처럼 보입니다. 그래서 내 첫 번째 가정은'IRData.Length = 0'입니다. – Adjit

+0

IRData.Length는 217088의 값을 반환합니다 ... 이것은 카메라의 IR 해상도의 해상도 때문에 발생합니다 (이 사이트에 따르면 : 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 드라이버를 업데이트하면 현재 작동하고있는 것 같습니다.