如何使用 Project tango 拍照?
我读了这个答案:Using the onFrameAvailable() in Jacobi Google Tango API
它适用于抓取帧,但图像质量不太好。是否有等效的 takePicture ?
注意java API
public void onFrameAvailable(int cameraId) {
if (cameraId == TangoCameraIntrinsics.TANGO_CAMERA_COLOR) {
mTangoCameraPreview.onFrameAvailable();
}
}
不提供RGB数据。如果我使用 Android 相机拍照,Tango 无法感知深度。在那里我必须使用 TangoCameraPreview。
谢谢
最佳答案
您不必使用 TangoCameraPreview
来获取 Java 中的帧。它实际上只是一个方便的类,旨在帮助在屏幕上显示视频。它似乎完全用 Java 实现,并调用 com.google.atap.tangoservice.Tango
(即不调用未发布的 API)。事实上,如果您查看 Tango SDK jar 文件,您会发现有人不小心包含了源文件的一个版本 - 它有一些差异注释并且可能不是最新的,但检查它仍然具有指导意义。
我不想使用 TangoCameraPreview
而是调用 Tango.connectTextureId()
和 Tango.updateTexture()
我自己将帧像素加载到 OpenGL 纹理中,然后我可以根据需要使用它。这正是 TangoCameraPreview
在幕后所做的事情。
在纯 Java 中捕获帧的最佳方法是将纹理以其精确大小 (1280x720) 绘制到屏幕外缓冲区并将其读回。这也会产生将纹理从任何 YUV 格式转换为 RGB 的副作用(这可能是也可能不是所需的)。在 OpenGL ES 中,您可以使用 framebuffer 来执行此操作和 renderbuffer .
将帧缓冲区/渲染缓冲区内容添加到已经可以渲染到屏幕的程序中并不是很多代码 - 与保存文件所需的代码量相当 - 但当你这样做时要正确执行是很棘手的首次。我创建了一个Android Studio sample capture app它将 Tango 纹理作为 PNG 保存到图片文件夹(当您点击屏幕时),以防对任何人有帮助。
关于java - 如何使用 Project Tango 拍摄高分辨率照片并同时感测深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978991/