«

Android Camera 实时滤镜(八)

时间:2024-3-2 17:39     作者:韩俊     分类: Android


一、Android Camera可以做哪些?

1、功能

拍摄相片
视频录制
取景器(扫描类应用,如人脸识别,名片识别,条形码识别)

2、根据Camera API实现自己的拍照程序,共7步

Created with Raphaël 2.1.21.初始化 SurfaceHolder2.相机实例 SurfaceCreated3.回调 SurfaceChanged4.清理 SurfaceDestroyed5.布局 SurfaceView6.按钮 添加拍照按钮

二、Camera Preview是什么?


摄像头返回的RAW数据经过isp处理后形成yuv数据,android系统将该数据绘制到取景区上,不断绘制帧数据形成实时预览数据。

三、如何获取Camera Preview中的数据?

Camera.PreviewCallback
setPreviewCallback

屏幕上显示一个新的预览帧时调用onPreviewFrame方法(时时获取)
setPreviewCallbackWithBuffer

其与setPreviewCallback的工作方式相同,但要求指定一个字节数

组作为缓冲区,用于预览图像数据(addCallbackBuffer)

四、Android Camera 实时滤镜怎么做?

Created with Raphaël 2.1.20.取景区大小设置为1像素1.取景区获取预览帧数据yuv2.获取来的YUV420SP与RGB进行转换3.进行滤镜算法渲染4.将处理后的图层绘制于屏幕上

YUV转RGB的算法,转换的公式一般如下,也是线性的关系:
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U

问题
1、屏幕卡顿,用户体验低
2、性能低,影响系统性能

如何优化?
- 提高流程度
图像渲染采用OpenGL ES SurfaceTexture
- 提高性能
GPU优化

标签: android

热门推荐