gpt4 book ai didi

android - 在 android 上获取 RAW 相机数据?

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:56 24 4
gpt4 key购买 nike

我想处理每个传入帧的位数组,基本上是利用从相机传感器接收到的每个帧的 YUV 格式并对其进行一些处理。我是 java/android 的新手,边学边学,所以我的一些问题很基础,但找不到适合我需要的答案。

Q1:如何获取相机传感器接收到的每一帧的位数组? (如何保存 YUV 字节流以供进一步使用?)
Q2:如何设置每接收到一个新的帧就接收一个新的数据数组进行处理?
Q3:我是否必须设置预览才能执行此操作,或者我可以直接点击保存来自打开相机的原始数据的缓冲区吗?
Q4:预览会减慢(接收新帧的)过程吗?

一些进一步的解释,如果需要的话:这个想法是创建一个与闪烁的 LED 灯和智能手机的单向通信,通过将手机摄像头指向 LED,一个实时过程将记录微小的变化并将它们解码到原始发送数据。为此,我计划接收每一帧的 YUV 数据,将其剥离到 Y 部分,并为每一帧决定灯是开还是关。

最佳答案

是的,就是Camera API . Android 21 及更高版本支持 camera2 API这可以给你更快的响应,但这取决于设备。如果您的目标是最大范围,我建议仍然使用已弃用的旧 API。

通常,Android 相机生成 NV21 格式,从中很容易提取 8bpp 亮度。

如果您想捕捉相机帧,Android 需要实时预览。有很多解决方法可以使最终用户隐藏预览,但这不受支持,并且任何此类技巧都可能在下一个设备或下一个系统升级时失败。但不用担心:实时预览根本不会延迟您的处理速度,因为它都是在单独的硬件 channel 中完成的。

总而言之,当您使用 Camera.setPreviewCallbackWithBuffer() 并执行所有操作时,您可以期望在平均设备上接收 30 fps correctly .完全实现 camera2 api 的高端设备可能会提供更高的帧速率。三星发表自家相机sdk .如果您需要三星设备的一些特殊功能,请使用它。

在多核设备上,您可以将图像处理卸载到线程池,但帧率仍然可能会受到相机硬件的限制。

请注意,您可以在 GPU 中执行一些有限的图像处理。 ,将着色器应用于从相机获取的纹理。

关于android - 在 android 上获取 RAW 相机数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35987346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com