2015-11-05 29 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中重写处理或使用图形加速器的强大功能,可以实现主要加速。

相关问题