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. android Camera 中添加一种场景模式

    转自:http://blog.csdn.net/fulinwsuafcie/article/details/8833652 首先,来了解一下什么是场景模式. 最简单的方法当然是google了,这里有一 ...

  3. 【转】android Camera 中添加一种场景模式

    http://blog.csdn.net/fulinwsuafcie/article/details/8833652 首先,来了解一下什么是场景模式. 最简单的方法当然是google了,这里有一篇文章 ...

  4. android Camera 中如何修改缩放变焦参数

    如何修改 zoomRatio   修改过程:   1, 先找到 gZoomRatio 数组序列的值   Location: V:\project_code\project_name\ALPS.JB.M ...

  5. Android从Camera中获取图片的两种方法

    方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 ? 1 2 3 4 5 6 try {      Intent cameraIntent = new In ...

  6. Android中直播视频技术探究之---摄像头Camera视频源数据采集解析

    一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,A ...

  7. Android 新老两代 Camera API 大起底

    https://blog.csdn.net/Byeweiyang/article/details/80515192 0.背景简介 最近有一部分相机相关的需求,专注于对拍摄的照片.视频的噪点.色温.明暗 ...

  8. Android Camera 使用小结

    Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...

  9. 摄像头(5)使用Camera2 替代过时的Camera API

    转自: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0428/2811.html 概要 从5.0开始(API Level 21 ...

随机推荐

  1. iOS 视频选择压缩

    //原理,还是调用UIImagePickerController控制器,设置Type为视频 #import "ViewController.h" #import <AVFou ...

  2. Apple Pay(转)

    Apple Pay 是在 iOS 8 中第一次被介绍,它可以为你的应用中的实体商品和服务,提供简单.安全.私密的支付方式.它使得用户支付起来非常简便,只需按一下指纹就可以授权进行交易. Apple P ...

  3. Android Studio 有用的插件

    从Eclipse切换到Android Studio 有一段时间了,发现as同,github,已经很多插件的集合有强大的合成效应. 安装插件请参考:http://blog.csdn.net/hyr839 ...

  4. 【OpenCV】图像转成YUV420 I420格式

    一.YUV420 I420介绍 一种颜色编码方法,在YUV色彩空间中,Y表示亮度信号,U.V表示色度信号: 其YUV排列如下,4个Y分量(2x2)对应一个U和V, Y存放完,接着存放U,U存放完,最后 ...

  5. Effective Java 70 Document thread safety

    Principle The presence of the synchronized modifier in a method declaration is an implementation det ...

  6. 大写金额字符串生成 C#实现

    思路: 中文对金额的描述以四位为一组, 只考虑一万亿以内的数字则每组内以千.百.十和[亿\万\元]区分各位 连续的零按一个处理,组内最低位的零可略去 无角无分说整,有角无分只说角,无角有分说零X分,有 ...

  7. Asp.Net远程调试

    1.在本地找到VS安装目录下的 Visual Studio Tools 文件夹  并进入Remote Debugger Folder文件夹 2.根据服务器的操作系统是32位还是64位,选择下面的文件夹 ...

  8. java运算符总结

    1.算数运算符:+.-.*./.%(加减乘除取余) 2.自增自减:++.-- 3.赋值运算符:=.+=.-=.*=./= 4.关系运算符:>.<.>=.<=.==.!= 逻辑运 ...

  9. mysql大小写问题

    以前做企业项目的时候,用的都是oracle数据库,在新公司项目用的是mysql,有关mysql大小写的问题 1   windows下默认mysql是不区分大小写的,要想让其支持大小写.更改方法 在my ...

  10. Dos

    一.简介 https://zh.wikipedia.org/wiki/DOS 二.系统下载 http://www.cn-dos.net/newdos/doswarea.htm 三.实用命令 1)查看系 ...