0

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

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

然后使用setPreviewCallbackWithBuffer获取相机缓冲区并将缓冲区发送到某个共享缓冲区,使用System.arraycopy( data, 0, Buffer.m_data, 0, data.length);whereBuffer.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 );

asimgImageView显示处理后的缓冲区的位置。

所有这些工作真的很慢。我相信部分问题在于我如何使用相机。

你能注意到问题吗?

谢谢!

4

1 回答 1

0

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

于 2013-05-29T05:25:17.090 回答