Android Camera 实时滤镜(八)

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。