2
我想救我的Kinect的原始深度數據,我不希望使用Kinect的工作室,因爲我需要的原始數據進行進一步的計算。我正在使用kinectv2和kinect sdk!保存原始detph數據
我的問題是,我只是得到低FPS爲所保存的數據。其約15-17FPS。
這裏我Framereader(在進一步的措施,我想保存colorstream也):
frameReader = kinectSensor.OpenMultiSourceFrameReader(FrameSourceTypes.Depth);
frameReader.MultiSourceFrameArrived += Reader_MultiSourceFrameArrived;
這裏事件:
void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
{
var reference = e.FrameReference.AcquireFrame();
saveFrameTest(reference);
frame_num++;
}
這裏的節能功能:
private unsafe void saveFrameTest(Object reference)
{
MultiSourceFrame mSF = (MultiSourceFrame)reference;
using (var frame = mSF.DepthFrameReference.AcquireFrame())
{
if (frame != null)
{
using (Microsoft.Kinect.KinectBuffer depthBuffer = frame.LockImageBuffer())
{
if ((frame.FrameDescription.Width * frame.FrameDescription.Height) == (depthBuffer.Size/frame.FrameDescription.BytesPerPixel))
{
ushort* frameData = (ushort*)depthBuffer.UnderlyingBuffer;
byte[] rawDataConverted = new byte[(int)(depthBuffer.Size/2)];
for (int i = 0; i < (int)(depthBuffer.Size/2); ++i)
{
ushort depth = frameData[i];
rawDataConverted[i] = (byte)(depth >= frame.DepthMinReliableDistance && depth <= frame.DepthMaxReliableDistance ? (depth) : 0);
}
String date = string.Format("{0:hh-mm-ss}", DateTime.Now);
String filePath = System.IO.Directory.GetCurrentDirectory() + "/test/" +date+".raw";
File.WriteAllBytes(filePath, rawDataConverted);
rawDataConverted = null;
}
}
}
}
}
另外Infomration: 我包括我的上INTE一個簡單的控制檯應用代碼l®Xeon®處理器E5-1620 3.7 GHz,16 GB RAM。
我認爲for循環正在向多的時間:
for (int i = 0; i < (int)(depthBuffer.Size/2); ++i)
{
ushort depth = frameData[i];
rawDataConverted[i] = (byte)(depth >= frame.DepthMinReliableDistance && depth <= frame.DepthMaxReliableDistance ? (depth) : 0);
}
我可以提高我的幀率。現在,我正在直接訪問kinectbuffer並退出for循環。
Microsoft.Kinect.KinectBuffer depthBuffer = frame.LockImageBuffer();
Marshal.Copy(depthBuffer.UnderlyingBuffer, rawData_depth, 0, (depthImageSize));
depthBuffer.Dispose();
frame.Dispose();
但我無法獲得30FPS率。現在它大約是25 FPS。
在保存後如何進一步使用原始保存的數據? –
不應該'私人不安全無效saveFrameTest(對象引用)'是'私有靜態不安全無效saveFrameTest(對象引用)'?即不應該添加「靜態」? –
'startTime'的數據類型是什麼? 'TimeSpan'? –