使用相机或自定义相机,借助Android SDK Camera类的,或Camera2的类。全新的设计的Camera2是从 SDK 5.0(API Level 21)开始才被引入的,取代原来Camera.Java。用户系统版本参差不齐,所以暂时还是使用Camera来进行开发。Camera类被用于获取图片设置,start/stop 预览,快照图片,恢复视频编码的帧,Camera是一个client对于Camera Service来说,将管理Camera 硬件相关.新API android.hardware.camera2.  
  Android 5.0后用了Camera2下的API, 这些API不仅提供了Android系统的拍照功能,还能支持RAW照片输出,甚至允许程序调整相机的对焦模式,曝光模式,快门等。

几个图像像素数据处理过程中的几个知识点:像素格式,图像拉伸,YUV像素取值范围,色域。

美颜有两步,一个是磨皮,一个是美白,要想正确美颜,所以还需要加上人脸识别技术和皮肤识别技术。

滤镜,图形变换处理核心是拿到纹理对象的rgb做算法处理.

图像滤镜处理的两种方式:RGB点乘运算;GPU的矩阵运算(效率更高)。图片处理中的计算:RGBA~利用自带的方法修改色调,饱和度,亮度来修改图片;矩阵~利用矩阵计算得到新的矩阵修改图片。

Google相机开源方案- https://github.com/google/cameraview
做相机?首学Google 的开源相机方案!- https://mp.weixin.qq.com/s/t2uDAOTiLamKxAd1CmUbtQ
Android 5.0以下的API为Camera 而 Android 5.0以上的API为Camera2,并且各大手机厂商对于Camera2的支持程度也不同。
对于不支持Camera2的设备来说,需要降级使用Camera.常见有后台场景,锁屏场景。相机是共享资源,其它程序访问使用时容易发生冲突,因此需要正确地释放。

-- 相机,对焦模式配置参数,可以通过Parameters.getFocusMode()接口获取。
Camera.Parameters.FOCUS_MODE_AUTO 自动对焦模式,摄影小白专用模式;
Camera.Parameters.FOCUS_MODE_FIXED 固定焦距模式,拍摄老司机模式;
Camera.Parameters.FOCUS_MODE_EDOF 景深模式,文艺女青年最喜欢的模式;
Camera.Parameters.FOCUS_MODE_INFINITY 远景模式,拍风景大场面的模式;
Camera.Parameters.FOCUS_MODE_MACRO 微焦模式,拍摄小花小草小蚂蚁专用模式;

-- 相机,场景模式配置参数,可以通过Parameters.getSceneMode()接口获取。
Camera.Parameters.SCENE_MODE_BARCODE 扫描条码场景,NextQRCode项目会判断并设置为这个场景;
Camera.Parameters.SCENE_MODE_ACTION 动作场景,就是抓拍跑得飞快的运动员、汽车等场景用的;
Camera.Parameters.SCENE_MODE_AUTO 自动选择场景;
Camera.Parameters.SCENE_MODE_HDR 高动态对比度场景,通常用于拍摄晚霞等明暗分明的照片;
Camera.Parameters.SCENE_MODE_NIGHT 夜间场景;

一个自定义 camera 1 - https://github.com/yangmingchuan/SunCamera
Camera2 - https://github.com/yangmingchuan/SunCamera/blob/f78570f4e2e68d1f86bb68e2dc00a344d4b3e101/app/src/main/java/cn/tongue/tonguecamera/ui/GoogleCameraActivity.java
android-Camera2Basic- https://github.com/googlesamples/android-Camera2Basic/#readme

> 自定义相机
--  Android系统提供了两种使用手机相机资源实现拍摄功能的方法:
  1.一种是直接通过Intent调用系统相机组件,这种方法快速方便,适用于直接获得照片的场景,如上传相册,微博、朋友圈发照片等。
  2.另一种是使用相机API来定制自定义相机,这种方法适用于需要定制相机界面或者开发特殊相机功能的场景,如需要对照片做裁剪、滤镜处理,添加贴纸,表情,地点标签等。

-- 摄像预览其实就是Android的Camera开发,对于Android的Camera开发,一般有两种方式,一种是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,另外一种是根据Camera API自写Camera程序,自然第一种不能作为我们的滤镜开发,所以我们采用第二种方式。

Camera:最主要的类,用于管理和操作camera资源。它提供了完整的相机底层接口,支持相机资源切换,设置预览/拍摄尺寸,设定光圈、曝光、聚焦等相关参数,获取预览/拍摄帧数据等功能
  SurfaceView:用于绘制相机预览图像的类,提供给用户实时的预览图像。普通的view以及派生类都是共享同一个surface的,所有的绘制都必须在UI线程中进行。(而surfaceview是一种比较特殊的view,它并不与其他普通view共享surface,而是在内部持有了一个独立的surface,surfaceview负责管理这个surface的格式、尺寸以及显示位置。)由于UI线程还要同时处理其他交互逻辑,因此对view的更新速度和帧率无法保证,而surfaceview由于持有一个独立的surface,因而可以在独立的线程中进行绘制,因此可以提供更高的帧率。自定义相机的预览图像由于对更新速度和帧率要求比较高,所以比较适合用surfaceview来显示。

-- Android HOME键、锁屏对SurfaceView的影响:
  1.在自定义相机页面按HOME键时的执行流程:
 程序运行->按HOME键;Activity调用的顺序是onPause->onStop;SurfaceView调用了surfaceDestroyed方法;然后再切回程序;Activity调用的顺序是onRestart->onStart->onResume;SurfaceView调用了surfaceCreated->surfaceChanged方法;
  2.而对于锁屏,其执行流程则是:
 Activity只调用onPause方法;解锁后Activity调用onResume方法;SurfaceView中surfaceholder.callback的所有方法都没有执行;
  3.推测是锁屏下系统并没有改变surfaceview的可见性,于是尝试在onPause和onResume时通过手动设置surfaceview的visibile属性。

-- Android相机开发的相关知识、流程,以及容易遇到的坑,
Android相机开发那些坑- http://blog.csdn.net/love_techlive/article/details/51331183
Multimedia框架Camera框架初识及自定义相机案例-- http://blog.csdn.net/hejjunlin/article/details/52738492
Multimedia框架Camera框架之Camera2补充- http://blog.csdn.net/hejjunlin/article/details/52751055
优美的Android自定义相机模块- http://download.csdn.net/download/gao_chun/9084853 
自定义相机模块-https://github.com/xplodwild/android_packages_apps_Focal 
打开前置摄像头并且实时获取数据- https://github.com/sadaharusong/FrontCamera/
TextureView和SurfaceTexture预览Camera拍照demo- http://blog.csdn.net/yanzi1225627/article/details/33313707
PlayCamera,TextureView预览Camera 拍照完整demo- http://download.csdn.net/detail/yanzi1225627/7540903
Android Multimedia框架总结案例,包含MediaPlayer,Camera等- https://github.com/hejunlin2013/MultiMediaSample
<uses-permission android:name="android.permission.FLASHLIGHT" />
Android-Camera开发- http://blog.csdn.net/oShunz/article/category/5952777

> 视频处理如模糊效果、水印等
 Android 也有 GPUImage 这个库的移植,叫做 android-gpuimage。同时,Google 官方开源了一个伟大的库,覆盖了 Android 上面很多多媒体和图形图像相关的处理。各种需求如美颜、水印、连麦互动等,如美颜、视频水印、滤镜、连麦等。如打上时间戳或者公司 Logo 的水印,祛斑美颜和声音混淆等处理。
 常见的滤镜效果GPUImage 地址:https://github.com/BradLarson/GPUImage。
 除了 iOS 端之外,Android 也有 GPUImage 这个库的移植:https://github.com/CyberAgent/android-gpuimage。
 同时,Google 官方也开源了一个伟大的库,覆盖了 Android 上面很多多媒体和图形图像相关的处理:https://github.com/google/grafika。

Android中OpenGL滤镜和RenderScript图片处理- https://www.jianshu.com/p/66d0fcb902ab
Android中滤镜使用OpenGL和RenderScript处理图片- https://github.com/liweiping1314521/RiemannCamera/

> 相机滤镜
  美图秀秀,Instagram,aillias等优秀相机APP的效果。
  拍照时的实时滤镜(onPreviewFrame Android )和静态滤镜。Android平台的滤镜:相机滤镜功能,图片美化滤镜功能,社交分享滤镜功能。lomo滤镜。HSL色彩模式是工业界的一种颜色标准,是通过对色调(H)、饱和度(S)、亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色调,饱和度,亮度三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

短视频的特效处理,每秒钟要处理几十张甚至更多的视频画面,所以简单的 C 语言处理算法并不能满足性能上的要求,我们需要使用手机的硬件加速能力,目前除了常见的 OpenGL 等 API 之外,还有如 Vulkan, DirectX, Metal 等可选方案。就目前而言,OpenGL 在各平台上通用性最好。

-- OpenGL ES 2.0来实现滤镜,RenderScript实现滤镜
 Android支持三种高性能运算的方式:RenderScript, OpenGL ES,JNI (with ARM NEON)。多实时滤镜的实现确实是一项对硬件性能和软件编写都具有很高要求的任务。使用opencv,简单实现人像优化功能:美白、肤色、祛斑和磨皮。GLES20,openGL ES实现人像优化。

目前Android平台优质的预览数据实时处理开源代码不多,例如android-gpuimage,采用将YUV数据在NDK层转化为RGB数据,由OpenGL渲染到屏幕中,滤镜算法由Shader实现;其他方面,经过研究,目前主要有以下5种思路实现:
 1.不转换,直接由OpenGL绘制,采用Shader实现图像处理(因处理算法和渲染图片大部分采用RGB格式,此方案暂不考虑,仅提出可能性);
 2.通过C/C++实现YUV->RGB和图像处理,合成Bitmap,由CPU绘制在Canvas上;
 3.通过C/C++实现YUV->RGB和图像处理,在NDK层直接绘制在SurfaceView上;
 4.通过C/C++实现YUV->RGB,采用Shader实现图像处理,采用OpenGL绘制(android-gpuimage);
 5.通过Shader实现YUV->RGB和图像处理,采用OpenGL绘制。(最终采用方案)

滤镜的开发主要是写片段着色器,从而实现各种滤镜效果。 即通过在C++层实现YUV-RGB转换,通过OpenGL绘制,通过片段着色器运行Shader脚本实现图像处理,虽然将滤镜的一些处理交给GPU来执行,极大的减少了速度,但YUV-RGB过程却拖了后腿。而Camera的帧数据却只能为NV21或者YV21的,不在OpenGLES贴图数据格式的支持范围。虽然我们可以将NV21、YV12的数据转换成RGBA的。

Android的视频编辑器,包括了视频录制、剪切、增加bgm、美白、加滤镜、加水印等多种功能- https://github.com/qqchenjian318/VideoEditor-For-Android

A prototype of camer live filter- https://github.com/fortdam/t_rtf_camera
ANDROID 高性能图形处理 之RenderScript- http://tangzm.com/blog/?p=18
滤镜相机MagicCamera- https://github.com/a483210/MagicCamera-ImageReader 
40余种实时滤镜相机,可拍照、录像、图片修改- https://github.com/wuhaoyu1990/MagicCamera
google MagicCamera采用的是录制方案来自于grafika- https://github.com/google/grafika
Android gpuimage的预览数据实时处理- https://github.com/CyberAgent/android-gpuimage
Android-Camera开发- http://blog.csdn.net/oShunz/article/category/5952777
Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜- http://blog.csdn.net/oshunz/article/details/50536031
Android+JNI+OpenGL开发自己的美图秀秀- http://blog.csdn.net/oshunz/article/details/50537631
Android系统将内置滤镜功能- http://blog.csdn.net/real_myth/article/details/50925986
Android平台Camera实时滤镜实现方法探讨(一)--JNI操作Bitmap- http://blog.csdn.net/oshunz/article/details/49862273
android Camera 中添加一种场景模式- http://blog.csdn.net/fulinwsuafcie/article/details/8833652

-- 人脸识别 OpenFace,opencv人像
https://cmusatyalab.github.io/openface/
http://blog.dlib.net/2014/02/dlib-186-released-make-your-own-object.html
http://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html
http://ydwen.github.io/papers/WenECCV16.pdf
OpenCV处理图片能力 - http://blog.csdn.net/q4878802/article/category/6081078
OpenCV+JavaCV实现人脸识别- http://blog.csdn.net/q4878802/article/details/52488447
Android使用OpenCV实现「人脸检测」和「人脸识别」- http://blog.csdn.net/q4878802/article/details/51841793
opencv实现人像优化- http://download.csdn.net/detail/u011630458/8754741

自定义相机Camera,相机/视频实时滤镜 - android相关推荐

  1. iOS8 Core Image In Swift:视频实时滤镜

    iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...

  2. android相机实时滤镜,android 包含美颜等40余种实时滤镜相机

    MagicCamera Idea from:android-gpuimage Real-time Filter Camera&VideoRecorder And ImageEditor Wit ...

  3. Compose使用OpenGL+CameraX快速实现相机“拍视频实时滤镜“、”拍照+滤镜“

    一.前言 短视频热潮还没有褪去,写这篇文章主要是帮助大部分人,能快速上手实现类似效果,实际上是: CameraX拿相机数据,OpenGL给CameraX提供一个Surface,数据放到OpenGL渲染 ...

  4. android给视频实时滤镜,移动端视频美颜、视频滤镜、人脸实时关键...

    简介 VisioninSDK是一个移动端的跨平台实时视频处理库,提供了视频磨皮美颜.视频滤镜.人脸实时关键点追踪.人脸实时整形(瘦脸.大眼睛等).人脸动态贴纸等功能的库. 注意:在运行demo时候,不 ...

  5. 利用PHOTOSHOP实现电影级视频实时滤镜渲染效果

    (1)问题的提出: 对于摄影师来说,一幅作品的好坏取决于拍摄 + 后期,随着计算机视频技术的飞速发 展,后期处理越发重要.然而对于一部视频的后期处理是非常复杂且专业和耗费资金设备及时间精力的事情.本文 ...

  6. GPUimage实时滤镜的实现

    GPUIMAGE中GPUImageStillCamera可以调用系统相机,并实现实时滤镜,但是我没有找到相机全屏的方法,望知道的说一下 GPUImageStillCamera继承自GPUImageVi ...

  7. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——1.1 工程思路与难点

    回到目录 本文主要探讨搭建一款Android平台下美颜相机可能需要填的坑,内容会不断更新.. 相机框架 相机框架相对比较简单,现有的开源代码很多,可以很容易的实现拍照和录像的功能. 预览尺寸选择 预览 ...

  8. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.3 仿制Snow相机和FaceU的边框/小脸模式

    Github项目地址 回到目录 在体验各种美颜相机时,我发现FaceU和Snow相机都带一个小脸模式(或者边框模式),像这样的效果: 这是Snow相机的: 这是FaceU的: 两个看上去并不一样,因为 ...

  9. Android自定义camera相机 系列(一)

    该文章 主要使用 自定义 surfaceview 及 camera 知识点,来实现一个自定义的拍照 .切换闪光灯 和 前后摄像头的功能.阅读需要消耗时间 :15分钟+ .内容比较简单算是 开发相机的过 ...

最新文章

  1. Spring Boot如何实现在线预览?这个开源项目可以学习一下,支持99%常用文件!...
  2. 对话李飞飞,揭秘国际体育赛事风“云”背后的黑科技
  3. 后缀数组 TYVJ P1860 后缀数组
  4. [NLP]基于IMDB影评情感分析之BERT实战-测试集上92.24%
  5. 开发中为组件添加预览信息
  6. Mongodb总结1-启动和Shell脚本
  7. HJQ巨佬のTwelveFold Way 手稿电子版
  8. 数据挖掘——关联分析Apriori算法
  9. html制作横向菜单,CSS 横向菜单的制作
  10. linux 安装bt下载软件,CentOS 7 利用安装源安装Deluge,PT,BT下载工具
  11. Android线程优化之线程池的详解
  12. 利用Python实现矢量逐个图斑裁剪栅格,形成图斑对应的栅格文件
  13. 中兴c300业务板_高价回收中兴c300业务板ETGH板卡 原装
  14. golang 压测工具vegeta改造-支持自定义压测任务
  15. WinRAR 6.01 官方中文正式版
  16. indesign中如何锁定零点_Indesign使用技巧
  17. ESD二极管ESD05V56T-2L参数
  18. 大规模文件存储怎么办?10分钟学会阿里OSS对象存储
  19. SpringCloud -netflix- Eureka(一) 使用生产者 消费者 服务注册 信息配置 自我保护 discovery 站点集群 狂神
  20. 《给研究生的学术建议》5——人际关系网络

热门文章

  1. LeetCode1-400题汇总,希望对你有点帮助!
  2. 计算机/软件专业课【考一门】的211学校集合!
  3. 【人脸识别实战一】系统架构设计
  4. 第四周项目2-太乐了
  5. 2021年中职网络空间安全最新国赛赛题解析仅代表自己的建议——zz-网络安全试题(7)解析
  6. win10下Anaconda中tensorflow2.4.1的下载
  7. 外貌测试软件准确吗,AI算法预测未来相貌,准确率高达90%以上
  8. Laravel - route 的api.php 与 web.php 的区别
  9. 华为网络工程师-了解华为交换机的接口类型-Hybrid
  10. P问题、NP问题、NPC问题、多项式时间