android - 如何原型(prototype)算法运行在 android 相机图像上?

标签 android jpeg android-camera augmented-reality

我有一个 Android 应用程序的想法,该应用程序依赖于我实时处理来自手机摄像头的图像(想想必须执行类似 Word Lens 的处理)。我想通过在静态图像上运行它来在 Python 中对我的算法进行原型(prototype)设计,但我希望静态图像与通常从 Android 手机相机接收的格式相匹配(我不想为 RGB 制作一个工作算法然后找出 Android 的相机 API 为您提供 HSV 字节数组)。两个问题:

  1. 格式是什么? (或者至少是最常见的,因为 Android 硬件各不相同)
  2. 如何在 Linux 上将我的 jpg 测试图像转换为这种格式?

最佳答案

所有 Android 相机都需要支持两种 YUV 格式,NV21 和 YV12(参见 setPreviewFormat documentation ),用于由 setPreviewCallback 启用的应用程序绑定(bind)回调.

某些设备可能支持其他格式(RGB、YUYV2 等),但这两种是强制性的,因此最好选择其中一种。 YV12 有更高的效率,尽管这取决于所讨论的硬件。

至于第二个,您可能可以使用某种实用程序(如 ImageMagick)进行颜色转换。 ,但关于这些格式的另一点是它们是针对色度(颜色)平面进行二次采样的; NV21 和 YV12 在两个维度上都将颜色格式下采样 2 倍。例如,如果图像大小为 640x480,则 Y(亮度) channel 将为 640x480,但 U 和 V channel 都仅为 320x240。您可能需要自己进行二次采样,因为大多数图像库不会公开那种格式(JPEG 图像实际上通常以类似的二次采样 YUV 格式存储,但大多数库会在给您之前转换回完整的 RGB数据)。

编辑:附加说明

或者,如果您的算法在 GPU 上运行良好,您可以使用 setPreviewTexture相机的路径,它允许您在 GPU 着色器中处理图像数据。在这种情况下,数据将始终为 RGB,在使用 OpenGL 2.0 的 GLSL 着色器中作为纹理访问。

关于android - 如何原型(prototype)算法运行在 android 相机图像上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596501/

相关文章:

macos - 提高 tesseract OCR 的图像质量

android - 在Android中设置相机对焦区域

android - 实时视频稳定

android - 如何从 .obb 文件中提取文件?

django - "decoder jpeg not available"与 Elastic beanstalk 上的 Django

android - 有没有办法检测我的应用程序是否在沙盒模式下克隆?

java - 使用 ImageIO.write() 创建 JPEG 创建一个 0 字节文件

android - 修复 Android Camera 应用的宽高比和旋转

android - 我如何创建像 Uber android 应用程序一样的滑动按钮

java - 项目选定监听器上的 Android 导航菜单未触发