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 인 이유를 이해하도록 도와 줄 수 있습니까?
'IRData.Length'에 대해 무엇을 얻습니까? 마치'for' 반복문으로 뛰어 들지 않는 것처럼 보입니다. 그래서 내 첫 번째 가정은'IRData.Length = 0'입니다. – Adjit
IRData.Length는 217088의 값을 반환합니다 ... 이것은 카메라의 IR 해상도의 해상도 때문에 발생합니다 (이 사이트에 따르면 : http : // pterneas .com/2014/02/08/kinect-for-windows-version-2-overview /)는 512 x 424 = 217088 ... for 루프로 들어가는 것 같습니다. – andyopayne