
我想使用每个输入帧的位数组,基本上是为每帧从相机传感器接收的YUV格式,并对其进行一些处理.
我是java / androID的新手并且在我学习的时候学习,所以我的一些问题非常基本,但是我找不到符合我需要的任何答案.
Q1:如何获取相机传感器接收到的每个帧的位数? (如何保存YUV字节流以供进一步使用?)
Q2:如何为接收到的每个新帧设置一个新的数据阵列将被接收进行处理?
问题3:我是否必须设置预览才能这样做,还是可以直接点击保存打开相机的原始数据的缓冲区?
问题4:预览会减慢(接收新帧)的过程吗?
如果需要,还可以进行一些进一步的解释:通过将手机摄像头指向LED,实现与闪烁的LED灯和智能手机的单向通信,实时过程将记录轻微的变化并将其解码为原始发送的数据.为此,我计划接收每帧的YUV数据,将其剥离到Y部分,并确定每个帧是否打开或关闭.
解决方法:
是的,那是Camera API.AndroID 21和更新的支持camera2 API可以给你更快的响应,但这取决于设备.如果您的目标是最大覆盖率,我建议您仍然使用已弃用的旧API.
通常,AndroID相机会生成NV21格式,从中可以很容易地提取8bpp的亮度.
如果要捕获相机帧,AndroID需要实时预览.有许多变通方法可以让预览对最终用户隐藏,但是不支持这种方法,并且任何此类技巧可能会在下一个设备或下一次系统升级时失败.但不用担心:实时预览根本不会延迟您的处理速度,因为它都是在一个单独的硬件通道中完成的.
总而言之,当您使用Camera.setPrevIEwCallbackWithBuffer()时,您可以获得平均30 fps的设备并完成所有 *** 作correctly.完全实现camera2 API的高端设备可以提供更高的帧速率.三星发布了他们自己的相机sdk.如果您需要三星设备的一些特殊功能,请使用它.
在多核设备上,您可以将图像处理卸载到线程池,但帧速率可能会受到相机硬件的限制.
请注意,您可以在GPU中执行一些有限的图像处理,将着色器应用于从相机获取的纹理.
总结以上是内存溢出为你收集整理的在Android上获取RAW相机数据?全部内容,希望文章能够帮你解决在Android上获取RAW相机数据?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)