Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android Camera1中的对焦与测光

Android Camera1中的对焦与测光

作者头像
雪月清
发布于 2020-07-27 15:23:27
发布于 2020-07-27 15:23:27
2K10
代码可运行
举报
文章被收录于专栏:雪月清的随笔雪月清的随笔
运行总次数:0
代码可运行

Android Camera1开发系列连载:

对焦模式

在使用特定的对焦模式的时候,必须确保相机支持该模式,相机支持的对焦模式可以通过Parameters#getFocusMode接口来获取:

常用的对焦模式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 连续自动对焦caf,预览场景变化时会自动去对焦
Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO 
Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE  
// 单次自动对焦af,下发一次请求则对焦一次
Camera.Parameters.FOCUS_MODE_AUTO

对焦区域

当对焦模式为caf或者af时,可以指定对焦区域,如果未设置,则驱动程序将会自己选择焦点目标,看一张来自官网描述对焦坐标系的图:

如图所示,无论屏幕是横屏还是竖屏,预览视图的中心点坐标都是(0,0),左上角为(-1000,-1000),右下角为(1000,1000)

在计算屏幕坐标系中的UI点击坐标(x,y)到sensor对焦坐标系对焦区域focusRect的时候,还需要考虑预览的旋转角和前置镜像,计算过程大致如下:

设置对焦区域的时候,需要先查询一下可设置对焦区域的最大个数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 返回0的时候表示不支持设置对焦区域,通常都是返回1
// 当返回个数大于1的时候,可以设置对焦区域列表,
// 每个对焦区域可以设置权重,权重范围为1~1000
Parameters#getMaxNumFocusAreas

常见对焦模式的切换场景

  • 单拍时,先对焦再拍照,拍照结束后切换到caf
  • 连拍时,先对焦再拍照,连拍结束后切换到caf
  • 触屏对焦TouchAF后,可以进行锁焦,预览场景变化时再转为caf;或者设置超时机制,3-5s后从af转为caf。不同手机的系统相机中选择的策略不同,主流策略大概就这两种

af切换到caf的时候,需要切换对焦模式和callback,从af切换到caf:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
camera.setAutoFocusMoveCallback(cafCallback);

从caf切换到af:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 三类UI:正在对焦画白框,对焦成功画绿/黄框,失败画红框
// 五种状态IDEL     
// focus is not activeFOCUSING 
// focus is in progressFOCUSING_SNAP_ON_FINISH 
// will take picture after focus finishSUCCESS  
// focus finished and successFAIL     
// focus finished and fails

autoFocusMoving流程:三种状态,两类UI

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 两类UI:moving的时候画白框,对焦成功画绿/黄框,超时直接清除UI
// 三种状态MOVING_START 
// caf startMOVING_END  
// caf endTIMEOUT     
// time out

上面的显示策略对对焦状态的展示是很明晰的,不过现在的主流相机app都不会搞这么复杂,比如我手头的iPhone和小米手机的系统相机就没这么多颜色切换

测光

测光的坐标系和使用流程与对焦是一样的,就不具体描述了。

在TouchAF的时候,测光区域可以和对焦区域一样,也可以区域中心点相同,而框的大小不同,或者对焦区域和测光区域设置为不同区域,这种焦侧分离的功能一般都是在相机app中的专业模式中提供。考虑用户体验选择不同的策略即可

常见测光方式

注:Redmi k30 5G版 系统相机专业模式

点测光:对画面中较小的区域(占整体面积的1.5% - 3%)进行测光,不考虑周边环境亮度,测光点所侦测的画面非常小,结果比较精确。这种测光模式适合用于场景光线反差大,或者主体在画面中所占比例较小的时候使用;

中央重点测光:测光重点放在画面的中心约75%的区域。在光线色差反差较大的情况下,这种测光模式比矩阵测光更容易控制效果;

平均测光:又叫矩阵测光,对画面中整体区域的光线强弱和色彩等情况进行侦测分析后,得到一个平均比较科学的测光值。这种测光模式适合在场景中光线、色彩等反差 不大的情况下使用;

以下面这张照片为例,在逆光场景下展示花瓣的纹路,为了让花瓣显得通透一点,可以采用点测光模式进行拍摄

测光方式的选择依赖于芯片提供支持或者相机Turing实现,在标准api中是没有直接提供相关接口的

该功能多见于系统相机专业模式,一般在第三方的相机类app启动相机预览后,都是默认的中央重点测光。第三方相机要实现测光方式的选择,除了依赖于厂商提供支持外,其实也可以自己研究一套AE权重表然后利用OpenGL来实现

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雪月清的随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
你好,最近正好有个业务要用到连拍。请教一下,camera1的连拍速度和分辨率怎么样?我用camera2只能打到1920*1080 30fps,或者 4k*3k,2fps。
你好,最近正好有个业务要用到连拍。请教一下,camera1的连拍速度和分辨率怎么样?我用camera2只能打到1920*1080 30fps,或者 4k*3k,2fps。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Android Camera开发系列:设置对焦模式模式
这里只介绍常用的几种对焦模式,详解的介绍,可以查看文末附的源码内容。 我们常用的也就下面4种对焦模式。
小驰行动派
2021/04/19
1.9K0
Android Camera1详解
最近因为工作需求,又要重新接触Android Camera1的API,详细整理了下相关知识点,这次没有记录到的知识点,后面会陆续补充,欢迎在公众号留言交流或者加我微信好友交流
雪月清
2020/07/09
3.1K0
Android Camera1详解
Android Camera2 实现触摸对焦功能(Touch to Focus)
之前在 Android Camera2 简介 这篇文章中简单介绍了下 Camera2 中 AF/AE 对焦区域如何进行设置,之前是通过手动计算对应关系实现的,但这种方式需要考虑到前后摄的区别,前摄和后摄坐标映射有区别,通用性不好,本文讲一下如何通过矩阵(Matrix)来实现这个过程
雪月清
2021/09/22
3.6K0
Android Camera2
从 Android 5.0 开始,Google 引入了一套全新的相机框架 Camera2(android.hardware.camera2)并且废弃了旧的相机框架 Camera1(android.hardware.Camera)。作为一个专门从事相机应用开发的开发者来说,这一刻我等了太久了,Camera1 那寥寥无几的 API 和极差的灵活性早已不能满足日益复杂的相机功能开发。Camera2 的出现给相机应用程序带来了巨大的变革,因为它的目的是为了给应用层提供更多的相机控制权限,从而构建出更高质量的相机应用程序。本文是 Camera2 教程的开篇作,本章将介绍以下几个内容:
ppchao
2020/12/01
2.4K0
Android Camera2
一篇文章带你了解Android 最新Camera框架
这篇文章主要分下面几点来展开讲解: 1)Android 最新Camera 整体框架; 2)Android Camera2 和HAL3 的基本了解; 3)Camera2 介绍; (本文所写的内容基于Android 9.0)
小驰行动派
2021/04/01
2K0
关于Camera性能优化的一些建议
上一篇文章主要介绍Camera的基本功能,我们在做相机应用的时候,除了相机的基本功能,还有一个非常重要的点,就是性能不能查,有几个方面:预览不能卡顿、拍照速度要快、录制视频不能卡。
马上就说
2022/05/25
2.7K0
关于Camera性能优化的一些建议
Android Camera1中的人脸检测
开启和停止人脸检测都是直接调用Camera对象提供的接口即可,使用起来是非常简单的,需要注意的是两个接口需要在预览期间调用,即启动预览后才能开启人脸检测,停止预览前关闭人脸检测
雪月清
2020/08/05
1.7K0
Android Camera1中的人脸检测
Android利用SurfaceView显示Camera图像爬坑记(四)
通过前面几篇,利用SurfaceView显示Camera的图像已经没什么问题了,接下来我们就要打磨一下细节,主要就是手机旋转的问题,考虑到我们会用横屏和竖屏的不同的情况。
Vaccae
2019/07/25
2.9K0
Android Camera2 Focus Distance
有一段时间,我一直在查找Camera Focus distance相关内容。网上也查找了不少资料,有时看别人提的问题以及回答,也能给自己带来不少的帮助,希望下面的内容也能帮助到有需要的小伙伴~
小驰行动派
2022/12/20
1.8K0
Android Camera开发序列:Camera2 API 的简单描述和调用(预览、拍照、录像
Android 5.1 以后,添加了Camera2 的API,能够满足更多操纵camera的场景。当然,相对应camera1的调用,也变的复杂一点。
小驰行动派
2021/04/19
2.1K0
Camera2 Extensions
相机扩展程序(Camera Extensions)是指Android提供的一套方便第三方相机开发者也能使用到平台厂商独有的一些Camera能力(比如bokeh、夜景、HDR等)的API
雪月清
2022/11/19
2.1K0
Camera2 Extensions
HarmonyOS学习路之开发篇—多媒体开发(相机开发 二)
用户一般都是先看见预览画面才执行拍照或者其他功能,所以对于一个普通的相机应用,预览是必不可少的。启动预览的建议步骤如下:
爱吃土豆丝的打工人
2023/10/15
2970
Android Camera开发系列:调整Camera预览方向
有时候我们想根据自己的需要调整下Camera的预览方向,那么是调用哪个API可以达到我们的目的呢?
小驰行动派
2021/04/30
3.3K0
Android开发(53) 摄像头自动对焦。在OpenCV图像识别中连续拍照时自动对焦和拍照。
对焦,这里所说的“焦”是指“焦距”。在拍照时,一定是需要调焦的。一般会在目标位置最清晰的时候会停止对焦。最近在处理OpenCV进行图像识别时,需要连续的调焦(对焦),并在对焦完成后进行拍照,获取图片后进行图像识别。识别完成后摄像头不关闭继续进行扫描识别。整理成本文。
张云飞Vir
2020/03/16
2.8K0
Camera开发需要关注哪些点
我们接下来要分享VideoEditor中的相机处理模块,但是在分享之前,还是有必要将Camera的一些问题给理清楚,磨刀不误砍柴工,只有比较清晰地掌握Camera的一些特点和应用的规律,后续在优化性能和解决问题的时候就不会手忙脚乱了。
马上就说
2022/05/25
8750
Camera开发需要关注哪些点
Android CameraX 知识点
主要是CameraX中一些关键知识点的汇总介绍。并不会完整介绍CameraX的使用。
zinyan.com
2023/07/14
2.3K0
Android CameraX 知识点
Unity基础(20)-Camera类
照相机是玩家观察世界的装置,屏幕空间点按像素定义,屏幕的左下为(0,0);右上是(pixelwidth,pixelHeight),z位置在照相机的世界单位中。
孙寅
2020/06/02
2.9K0
Android 照相机 camera 操作封装
项目中经常用到Android自带的camera拍照功能。于是做了个封装,CameraUtil.java类。
杨永贞
2020/12/01
1.3K0
Android 照相机 camera 操作封装
Android摄像头采集选Camera1还是Camera2?
好多开发者纠结,Android平台采集摄像头,到底是用Camera1还是Camera2?实际上,Camera1和Camera2分别对应相机API1和相机API2。Android 5.0开始,已经弃用了Camera API1,新平台重点开发Camera API2,Camera API1 会逐渐被淘汰。Camera API2 框架为应用提供更接近底层的相机控件,包括高效的零复制连拍/视频流以及曝光、增益、白平衡增益、颜色转换、去噪、锐化等方面的每帧控件。
音视频牛哥
2024/08/08
4420
Android摄像头采集选Camera1还是Camera2?
Android相机开发那些坑
QQ空间开发团队
2016/10/24
29.9K8
Android相机开发那些坑
相关推荐
Android Camera开发系列:设置对焦模式模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验