我正在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 );
asimg
是ImageView
显示处理后的缓冲区的位置。
所有这些工作真的很慢。我相信部分问题在于我如何使用相机。
你能注意到问题吗?
谢谢!