一、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优化