【发布时间】:2015-05-13 22:43:05
【问题描述】:
我正在尝试从 Google Tango 的 onFrameAvailable 方法中捕获图像数据。我正在使用 Leibniz 版本。在头文件中,据说缓冲区包含 HAL_PIXEL_FORMAT_YV12 像素数据。在release notes 他们说缓冲区包含 YUV420SP。但在documentation 中据说像素是RGBA8888 格式()。我有点困惑,另外。我并没有真正得到图像数据,而是很多洋红色和绿色。现在我正在尝试将 YUV 转换为 RGB,类似于 this one。我想步幅也有问题。这是 onFrameAvailable 方法的代码:
int size = (int)(buffer->width * buffer->height);
for (int i = 0; i < buffer->height; ++i)
{
for (int j = 0; j < buffer->width; ++j)
{
float y = buffer->data[i * buffer->stride + j];
float v = buffer->data[(i / 2) * (buffer->stride / 2) + (j / 2) + size];
float u = buffer->data[(i / 2) * (buffer->stride / 2) + (j / 2) + size + (size / 4)];
const float Umax = 0.436f;
const float Vmax = 0.615f;
y = y / 255.0f;
u = (u / 255.0f - 0.5f) ;
v = (v / 255.0f - 0.5f) ;
TangoData::GetInstance().color_buffer[3*(i*width+j)]=y;
TangoData::GetInstance().color_buffer[3*(i*width+j)+1]=u;
TangoData::GetInstance().color_buffer[3*(i*width+j)+2]=v;
}
}
我正在片段着色器中进行 yuv 到 rgb 的转换。
有没有人获得过 Google Tango Leibniz 版本的 RGB 图像?或者在从 YUV 转换为 RGB 时遇到过类似的问题?
【问题讨论】:
标签: android c camera yuv google-project-tango