【问题标题】:How to get 2 outputs capturesession with camera2如何使用camera2获得2个输出捕获会话
【发布时间】:2015-06-05 10:17:30
【问题描述】:

我正在开发一个 Android 应用来使用 camera2 捕捉快照并绘制与实时拍摄的图片相关的图表。

是否可以将捕获结果检索为SurfaceView(以便显示)和 RGB 以计算绘制图形的点?

【问题讨论】:

  • 我认为这与 stackoverflow.com/questions/26293819/… 基本相同,尽管您正在捕获用于分析而不是存储。
  • sorry fadden,但我还是不知道该怎么做。
  • 您能否进一步澄清一下?

标签: android surfaceview rgb


【解决方案1】:

相机硬件通常不原生支持 RGB 格式,仅支持 YUV。

您可以使用:

  • 一个 ImageReader 作为附加输出,采用 ImageFormat#YUV_420_888 格式,并使用 Java 或本机代码自行转换为 RGB
  • 使用 RenderScript YUV 分配作为附加目标并在 RenderScript 中转换为 RGB
  • 或者您可以使用 SurfaceTexture 输出到 GPU,然后使用 glReadPixels 读回 RGB 数据,或者直接在 GL 着色器中对图形进行必要的处理/绘制。

【讨论】:

  • 我将使用渲染脚本进行转换,也用于计算。问题是:renderscript 是否能够实时进行转换和计算。
  • 我需要计算每列像素的灰度平均值
  • 如果需要计算平均灰度,那就用YUV吧! Y 亮度通道几乎正是您所需要的,无需为此转换为 RGB。那么你需要做的数学就会少得多。设备上是否有足够的 CPU 能力取决于设备和您尝试使用的分辨率,但删除 YUV->RGB 转换肯定会有所帮助。
  • 显示器需要转换吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2019-10-24
相关资源
最近更新 更多