我正在开发一款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");
}
}打印"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次。
有没有办法加快摄像机的回调频率,同时仍然对帧数据执行操作?
发布于 2015-11-05 11:35:31
无需重写代码,您就可以利用现代设备的多核体系结构:将处理负载卸载到线程池,
但是很有可能你可以通过优化显着提高你的算法的性能。转换为原生代码可能会有所帮助,特别是当您完全使用霓虹灯向量指令时。
如果您在RenderScript中重写处理或使用图形加速器的功能,则可以实现显著的加速。
https://stackoverflow.com/questions/33535801
复制相似问题