问: 有没有人知道如何使用Tango Java(Jacobi)API onFrameAvailable()回调获取Tango的彩色相机图像缓冲区?
背景:
我有一个增强现实应用程序,在Tango的背景中显示视频.我在此示例后使用Java API(Jacobi)成功创建了视频叠加示例.我的应用程序工作正常,视频在后台正确呈现.
作为应用程序的一部分,我想在用户按下按钮时存储视频后备缓冲区的副本.因此,我需要访问相机的RGB数据.
根据Jacobi发行说明,任何希望访问相机RGB数据的类都应该实现新的onFrameAvailable()方法OnTangoUpdateListener.我做了这个,但我没有看到任何实际获取像素的句柄或参数:
Java API
@Override
public void onFrameAvailable(int cameraId) {
//Log.w(TAG, "Frame available!");
if (cameraId == TangoCameraIntrinsics.TANGO_CAMERA_COLOR) {
tangoCameraPreview.onFrameAvailable();
}
}
Run Code Online (Sandbox Code Playgroud)
如图所示,onFrameAvailable只有一个参数,整数表示生成视图的摄像机的id.将其与C库回调进行对比,后者提供对图像缓冲区的访问:
C API
TangoErrorType TangoService_connectOnFrameAvailable(
TangoCameraId id, void* context,
void (*onFrameAvailable)(void* context, TangoCameraId id,
const TangoImageBuffer* buffer));
Run Code Online (Sandbox Code Playgroud)
我期待Java方法在C API调用中有类似于缓冲区对象的东西.
我试过的
我尝试扩展TangoCameraPreview课程并将图像保存在那里,但我只获得黑色背景.
public class CameraSurfaceView extends TangoCameraPreview {
private boolean takeSnapShot = false;
public void takeSnapShot() {
takeSnapShot …Run Code Online (Sandbox Code Playgroud)