【发布时间】:2015-12-12 23:16:30
【问题描述】:
还试图从 Tango 的彩色摄像头访问颜色数据字节,我被困在 java API 上,因为我能够将探戈摄像头连接到表面进行显示(但实际上显示还可以,不容易访问 raw数据,也不是时间戳)...所以最后我在本机代码(最新的 FERMAT 库和标头)上使用 C API 并遵循我在堆栈溢出中找到的建议,将派生示例代码注册到connectOnFrameAvailable()...(我开始使用 PointCloudActivity 示例进行该测试)。
- 我发现的第一个问题是注册到该回调的一些副作用,通常工作正常(回调定期触发),但随后我也注册的另一个回调,以获得 xyz 云,开始无法触发。就像我提到的示例代码一样,云通过
onXYZijAvailable()回调获得,应用使用TangoService_connectOnXYZijAvailable(onXYZijAvailable)注册。
所以未能触发 xyz 回调并不总是发生,但通常有一半的时间,在测试期间,有一个糟糕的解决方法,就是将应用程序置于后台,然后再次置于前台......这很奇怪,这是“恢复”与暂停/恢复低级别的东西有关??)。如果有人有线索.... 顺便说一句,在 Java API 中,观察到相同的副作用,一旦连接 cam 纹理进行显示(通过 Tango 足够的 API ...)
但这是我的第二个“问题”,回到从相机获取 YV12 颜色数据: 通过注册到 TangoService_connectOnFrameAvailable(TangoCameraId::TANGO_CAMERA_COLOR, nullptr, onFrameAvailable) 并提供像这样定义的静态函数 onFrameAvailable:
static void onFrameAvailable(void* ctx, TangoCameraId id, const TangoImageBuffer* buffer)
{
...
LOGI("OnFrameAvailable(): Cam frame data received");
// Check if data format of expected type : YV12 , i.e.
// TangoImageFormatType::TANGO_HAL_PIXEL_FORMAT_YV12
// i.e. = 0x32315659 // YCrCb 4:2:0 Planar
//LOGI("OnFrameAvailable(): Frame data format (%x)", buffer->format);
....
}
问题是接收到的 TangoImageBuffer 结构的宽度、高度、步幅信息似乎有效(1280x720,...),但返回的格式每次都在变化,而不是预期的幻数(此处为 0x32315659)... 我在那里做错了什么? (但其他信息还可以……)
此外,这里显然只定义了一种数据格式(YV12),但是从演示应用程序中看到鱼眼图像,似乎是灰度图像,它使用与 RGB cam 低级捕获相同的(颜色)格式吗? ??
【问题讨论】:
标签: android colors google-project-tango