码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • android 慢动作触发区域对焦


    一、普通模式区域对焦

    Android Camera2 实现触摸对焦功能(Touch to Focus) - 简书

    关键代码

    1. public void startControlAFRequest(MeteringRectangle rect,
    2. CameraCaptureSession.CaptureCallback captureCallback) {
    3. MeteringRectangle[] rectangle = new MeteringRectangle[]{rect};
    4. // 对焦模式必须设置为AUTO
    5. mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AF_MODE_AUTO);
    6. //AE
    7. mPreviewBuilder.set(CaptureRequest.CONTROL_AE_REGIONS,rectangle);
    8. //AF 此处AF和AE用的同一个rect, 实际AE矩形面积比AF稍大, 这样测光效果更好
    9. mPreviewBuilder.set(CaptureRequest.CONTROL_AF_REGIONS,rectangle);
    10. try {
    11. // AE/AF区域设置通过setRepeatingRequest不断发请求
    12. mSession.setRepeatingRequest(mPreviewBuilder.build(), null, mHandler);
    13. } catch (CameraAccessException e) {
    14. e.printStackTrace();
    15. }
    16. //触发对焦
    17. mPreviewBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,CaptureRequest.CONTROL_AF_TRIGGER_START);
    18. try {
    19. //触发对焦通过capture发送请求, 因为用户点击屏幕后只需触发一次对焦
    20. mSession.capture(mPreviewBuilder.build(), captureCallback, mHandler);
    21. } catch (CameraAccessException e) {
    22. e.printStackTrace();
    23. }
    24. }

    //触发对焦通过capture发送请求, 因为用户点击屏幕后只需触发一次对焦
    mSession.capture(mPreviewBuilder.build(), captureCallback, mHandler);

    二、慢动作模式区域对焦

    慢动作模式使用上述mSession.capture是无法完成对焦的,需要使用mSession.captureBurst来完成。

    2.1 创建List

    1. public List createHighSpeedRequestList(
    2. CameraDevice cameraDevice, CameraConstrainedHighSpeedCaptureSession session,
    3. int templateType, Surface... surfaces) {
    4. CaptureRequest.Builder reqBuilder;
    5. List list;
    6. try {
    7. reqBuilder = cameraDevice.createCaptureRequest(templateType);
    8. for (CaptureRequest.Key key : mCaptureRequests.keySet()) {
    9. setRequest(reqBuilder, key);
    10. }
    11. addRequestParameter(reqBuilder);
    12. for (Surface surface : surfaces) {
    13. reqBuilder.addTarget(surface);
    14. }
    15. list = session.createHighSpeedRequestList(reqBuilder.build());
    16. } catch (CameraAccessException err) {
    17. err.printStackTrace();
    18. return null;
    19. }
    20. return list;
    21. }

    2.2 进行一次对焦动作

    1. List requestList = createHighSpeedRequestList(...);
    2. mSession.captureBurst(requestList, captureCallback, mHandler);

    项目经验,仅供参考

  • 相关阅读:
    几个好用的数据标注软件labelme、CVAT及LabelImage
    必看!2023年最新MSP开源应用程序指南电子书大揭秘
    Scratch软件编程等级考试一级——201909
    黑客(网络安全)技术速成自学
    【SA8295P 源码分析 (四)】23 - QNX Ethernet MAC 驱动 之 emac1_config.conf 配置文件解析
    C语言期末复习题(上)
    Gem5 for Ubuntu20.04
    GCC:屏蔽动态库之间的依赖
    Django和jQuery,实现Ajax表格数据分页展示
    Matter 研讨会(第二期)|乐鑫 Matter SDK 赋能客户自主开发 Matter 产品
  • 原文地址:https://blog.csdn.net/dzning123/article/details/134267766
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号