1,相机对焦模式有以下几种:

auto  //自动
infinity //无穷远
macro //微距
continuous-picture //持续对焦
fixed //固定焦距

2,常见对焦模式切换场景

2.1,单拍时,会先对焦再拍照,再切换到CAF;

有一个从 af 切换到 caf 过程

2.2,连拍时,会先对焦再拍照,连拍完成,再切换到 CAF;

同样一个从 af 切换到 caf 过程

2.3,触屏对焦,过一段时间(2s-3s)会自动切换到CAF; (对焦锁定2s-3s)

也是从af 切换到 caf 过程
这三个场景都涉及到从 af 切换到 caf 过程,这个切换过程有两个地方需要注意:
一是focus-mode 要切换过来,并且设置到底层
mParameters.setFocusMode("auto");
mParameters.setFocusMode("continuous-picture");
二是相应的回调也要切换过来,设置到底层
mActivity.getCameraDevices().autoFocus(mAutoFocusCallback);
mActivity.getCameraDevices().setAutoFocusCallBack(mAutoFocusMoveCallback);
这两个步骤缺一不可。

3,对焦画框逻辑

3.1, autoFocus 流程中会有三类图片,五种状态

三类图片很好理解,正在对焦画白框,对焦成功画绿框,对焦失败画红框
五种状态分别为:
public static final int STATE_IDLE = 0; // Focus is not active.
    public static final int STATE_FOCUSING = 1; // Focus is in progress.
    // Focus is in progress and the camera should take a picture after focus finishes.
    public static final int STATE_FOCUSING_SNAP_ON_FINISH = 2;
    public static final int STATE_SUCCESS = 3; // Focus finishes and succeeds.
public static final int STATE_FAIL = 4; // Focus finishes and fails.

3.2, autoFocusMoving 流程中只有两类图片,三种状态

autoFocusMoving 的回调中有一个参数即 moving 判断当前是否正在运动,若运动则该参数值为 true,否则为 false。正常流程即判断到在运动(切换场景)即开始对焦,画白框;稳定后(对焦成功),画绿框;还有一种状态即为对焦超时,此时会直接清除白框。
log会有类似这种显示:
onAutoFocusMoving moving = true
     onAutoFocusMoving moving = false
onAutoFocusMoving timeout

3.3, 对焦框 与 人脸框 是互斥的,会在代码中看到类似这种逻辑

// Ignore if the camera has detected some faces.
        if (mFaceView != null && mFaceView.faceExists()) {
            mFocusIndicatorRotateLayout.clear();
}

4,相机专业模式中是如何做到这几种对焦逻辑切换的

auto  //自动
infinity //无穷远
macro //微距
continuous-picture //持续对焦
手机所搭载的摄像头一般都是定焦的,只是各个焦段的特性不一样,即只有一个焦平面是可以合焦的。因此在无穷远和微距模式下都是通过事先写在驱动中的一些参数去设置的。auto和continuous-picture 是摄像头本身就支持的对焦模式,可以把 continuous-picture理解为程序在检测到场景变化时自动autoFocus。
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/fulinwsuafcie/article/details/49558001

Camera中对焦模式总结相关推荐

  1. camera中LENS和SENSOR的CRA是如何搭配的?

    camera中LENS和SENSOR的CRA是如何搭配的? camera中,lens和sensor的搭配是非常关键的问题.但这两者是如何搭配的呢? 一般在Sensor data sheet中会附有全视 ...

  2. Mtk Camera中Hal1/Hal3的Picture size和Preview size配置

    在进行camera系统开发时,总会碰到产品需要,需要一个添加一个多少多少M的照片大小,比如产品经理说我们也要添加一个1:1,添加一个18:9的照片大小.这个情况很常见了,所以这篇文章总结一下平常工作中 ...

  3. android camera工程师,Android从Camera中获取图片的两种方法

    方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 /**   启动Camera */ private void intentCamera(){ try { ...

  4. Camera中onPreviewFrame()方法的视频方向旋转

    1.旋转90度 private byte[] rotateYUV420Degree90(byte[] data, int imageWidth, int imageHeight) {byte [] y ...

  5. android webview拍照,在android 2.2/2.3中使用webview从camera中照相并且上传的实现

    最近做了需要实现一个小功能,在安卓的离线数据录入程序中,要支持文件的的上传.简单而言,就是在一个webview包装起来的离线的Web App中,通过input[type=file]的指定需要上传的文件 ...

  6. android Camera 中的相关概念

    相机"调焦"与"对焦"的区别 相机的镜头都是有多片透镜组成的,可以等效为一个凸透镜.假设某一个时刻,该透镜的焦距(对平行光聚焦的焦距)是f. "调焦& ...

  7. camera中lookAt的理解

    camera为相机看的目标点:因为屏幕显示的是相机视椎体的可视范围,而相机的lookAt方法指的是相机观察的目标点,故可以得出: 相机lookAt的点一定显示在屏幕的正中央:利用这点,我们可以实现物体 ...

  8. 【Camera】Camera中光圈、快门、感光度

    https://blog.csdn.net/armwind/article/details/52413177 快门: 顾名思义快门就象一扇门,这扇门打开的时间长,进光量就多,打开的时间短,进光量就少, ...

  9. Android Camera中的aidl与binder (二)- mRemote对象拾遗

    在回顾上篇文章的时候,我注意到:Binder和BinderProxy两个类都实现了transact,它们也都是IBinder的实现类 那么mRemote调用的transact究竟是哪个类的方法? 并且 ...

最新文章

  1. tcp时间戳 引起的网站不能访问
  2. [C++调试笔记]/* 求解-0.5dt时刻速度 */
  3. 云效83行代码重构大师赛-码力全开,重启方舟
  4. PUCCH Format
  5. shell 判断字符串相等_编程小短文:Bash子字符串还在用==?试试=~性能瞬间飙升100倍...
  6. Python 项目打包成可执行程序命令
  7. Git commit 常用表情快速查询
  8. Java面试:Java面试总结PDF版
  9. 浅析ASP.NET 2.0的用户密码加密机制
  10. kettle job如何利用java的反射机制获取执行的sql语句
  11. image.merge图像有什么变化_图像特征工程:HOG特征描述子介绍
  12. 小米蓝牙音箱驱动_2020年度智能音箱拆解报告汇总,涵盖27个品牌72款产品
  13. 虚拟机系统iso镜像下载_如何下载正版系统镜像
  14. shp数据制作3DTiles白膜
  15. 苹果iPhone/iPad不越狱怎么破解付费APP?
  16. 洛谷 P4643 [国家集训队]阿狸和桃子的游戏
  17. 优秀课程案例|如何用scratch画柱形统计图
  18. 关于office2013打开后始终显示正在配置问题的解决方案集锦
  19. 刚子扯谈:黑客文化 黑客精神
  20. python利用itchat接口和pyecharts包进行数据可视化

热门文章

  1. 事务处理与SQL查询
  2. OS操作系统概念简介
  3. Jackson,Gson,Fastjson比较
  4. 源码分析Dubbo前置篇-寻找注册中心、服务提供者、服务消费者功能入口
  5. C++手写快读详解(快速读入数字)
  6. 正则表达式验证账号代码
  7. error:Assertion failed ((unsigned)i0 (unsigned)size.p[0]) in cv::Mat::at
  8. [原创]css设置禁止中文换行
  9. 优秀的云存储解决方案Dropbox,现在注册就有2G
  10. (转)RabbitMQ学习之Headers交换类型(java)