2015-11-05 30 views
0

我正在開發一款Android應用程序,它可以逐幀拍攝相機數據並計算每一幀的像素顏色平均值。問題是,雖然每秒調用相機回調onPreviewFrame(byte[] data, Camera camera)約24次,但如果我在相機回調中進行計算,則回調頻率會顯着減慢到每秒8-10次回調,這太低。如何更快地執行相機數據計算?

例如:

mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() { 
      @Override 
      public void onPreviewFrame(byte[] data, Camera camera) { 
       Log.e(tag, "Frame"); 
      } 
} 

打印 「幀」 大約每秒24次,這是很好的。但是,

mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() { 
      @Override 
      public void onPreviewFrame(byte[] data, Camera camera) { 
       //do heavy calculations with data array 
       Log.e(tag, "Frame"); 
      } 
} 

每秒打印「幀」約8次。

有什麼方法可以加速攝像機的回調頻率,同時仍然對幀數據執行操作?

+0

你試過OpenCv嗎? –

回答

0

無需重寫你的代碼,你可以利用現代設備的多核架構:卸載處理的線程池,

但很可能,你可以通過顯著優化提高你的算法性能。轉換爲本地可以提供幫助,特別是如果您完全使用NEON向量指令。

如果您在RenderScript中重寫處理或使用圖形加速器的強大功能,可以實現主要加速。

相關問題