2012-08-31 56 views
0

我有一些問題與kinect。 當我嘗試從事件中獲取彩色圖像時:Sensor_AllFramesReady一切正常。 例如:獲取顏色圖像不在框架準備好事件

using (ColorImageFrame colorFrame = e.OpenColorImageFrame()) { 
    //save image for print 
    if (colorFrame == null) { 
     return; 
    } 
    byte[] colorData = new byte[colorFrame.PixelDataLength]; 
    colorFrame.CopyPixelDataTo(colorData); 
    int averagedImage = colorFrame.Width * PixelFormats.Bgr32.BitsPerPixel/8; 
    int stride = colorFrame.Width * 4; 
    pictureBitmap = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96, PixelFormats.Bgr32, null, colorData, stride); 
} 

但是,當我嘗試用

using (ColorImageFrame Image = Sensor.ColorStream.OpenNextFrame(10)) { 

} 

我得到錯誤做事件之外的相同代碼:

「這個API不能當一個事件偵聽器已設置所謂的」

我試圖在調用此函數之前刪除事件,但這不會改變任何東西

+0

你是否刪除此行? 'kinectSensor.AllFramesReady + = new EventHandler (kinectSensor_AllFramesReady);' – EdgarT

+0

否,在調用上述函數之前,我調用:Sensor.AllFramesReady - = Sensor_AllFramesReady; – Beno

+0

刪除該行 – EdgarT

回答

1

您必須選擇,事件處理程序或輪詢方法。您可以使用該事件並保存最後一幀以在其他地方使用它。

+0

這正是我所做的。但這是浪費內存和運行時間 – Beno

+0

將最後一個ColorImageFrame保存在全局變量中是浪費內存嗎?這只是一個圖像,不需要任何過程。請詳細解釋爲什麼這不是解決方案。 – EdgarT

+0

我沒有正確解釋我自己,這個事件每秒鐘工作30次,如果每次我做上述計算,那就需要時間。這裏的問題是時間而不是記憶。沒有解決方案來做到這一點? – Beno