我正在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
。
这一切都非常慢。我认为部分问题在于我如何使用相机。
你能注意到这个问题吗?
谢谢!