如何通过一些图像处理来改进使用Android相机

时间:2013-05-13 12:57:11

标签: android performance android-camera augmented-reality

我正在Android上构建一个带有图像处理功能的AR应用程序,我处理相机的方式是我创建一个假表面:

        SurfaceView view = new SurfaceView(context);
        camera.setPreviewDisplay(view.getHolder());

然后使用setPreviewCallbackWithBuffer获取相机缓冲区并使用System.arraycopy( data, 0, Buffer.m_data, 0, data.length);将缓冲区发送到某个共享缓冲区,其中Buffer.m_data与我的主要活动共享。

在我的主要活动中,我将运行一个循环,获取共享缓冲区,将其发送到我的NDK代码,将其恢复,然后将其显示为图像:

if( m_bitmap == null ){
    m_bitmap = Bitmap.createBitmap( m_width, m_height, Bitmap.Config.ARGB_8888 );
}
m_bitmap.copyPixelsFromBuffer( ByteBuffer.wrap(m_imData.m_data) );

img.setImageBitmap( m_bitmap );

img是显示已处理缓冲区的ImageView

这一切都非常慢。我认为部分问题在于我如何使用相机。

你能注意到这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

最有可能你需要一个Canvas and Drawables来更快地完成这项工作。