Vuforia应用之相机自动对焦功能
在一些卡牌(卡片)游戏应用上,如果不能很好的对焦就会导致用户体验不佳,假若让系统相机去自动对焦这样出来的效果就会好很多,好的下面来说说——
说之前,先科普一下,不喜略过直接往下看哈~
对焦也叫对光、聚焦。通过照相机对焦机构变动物距和相距的位置,使被拍物成像清晰的过程就是对焦。而对焦的方式有以下几种:自动对焦、手动对焦、多重对焦以及全息自动对焦、我们这里讲的就是自动对焦,传统相机上的傻瓜式对焦方法。以下是相关的代码实现:
基于触摸屏,一种是直接将脚本文件挂载到ARCamera,一种是用NGUI、将其放到新建的GameManger底下,不过两种思路都是相同的,自动对焦的代码要写在start()方法里面,如图:(切记:using Vuforia;这个需要在一开始新建的脚本中引入)
接下来分析代码:
//自动对焦变量private string label;private float touchduration;private Touch touch;
Start()方法,初始化并进行自动对焦调用
void Start () {if (Input.touchCount > 0){touchduration += Time.deltaTime;touch = Input.GetTouch(0);if (touch.phase == TouchPhase.Ended && touchduration < 0.2f){StartCoroutine("SingleOrDouble");}}else{touchduration = 0;}}
IEnumerator SingleOrDouble(){yield return new WaitForSeconds(0.3f);if (touch.tapCount == 1){Debug.Log("Single");OnSingleTapped();}else if (touch.tapCount == 2){StopCoroutine("SingleOrDouble");//否则会触发两次Double TouchDebug.Log("Double");OnDoubleTapped();}}private void OnSingleTapped(){TriggerAutoFocus();label = "Tap the Screen!";}private void OnDoubleTapped(){label = "Double Tap the Screen!";}
触发自动对焦方法:
public void TriggerAutoFocus(){StartCoroutine(TriggerAutoFocusAndEnableContinuousFocusIfSet());}private IEnumerator TriggerAutoFocusAndEnableContinuousFocusIfSet(){CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);yield return new WaitForSeconds(1.0f);CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);}void OnGUI(){GUI.Label(new Rect(10, 0, 100, 100), "-&-C*-Z*-D*-&->" + label);}
最后在update()方法写上:
void Update () {if (Input.GetKey(KeyCode.Escape)){Application.Quit();}
}
有的童鞋,也将自动对焦的代码写在update()方法里面,即是start()方法空着,由于我这边的功能实现上还有别的,所以我做了这样的处理,希望大家多多交流哈,不吝赐教。
using UnityEngine;
using System.Collections;
using Vuforia;public class AutoFocusControl : MonoBehaviour {private string label;private float touchduration;private Touch touch;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {if (Input.GetKey(KeyCode.Escape)){Application.Quit();}if (Input.touchCount > 0){touchduration += Time.deltaTime;touch = Input.GetTouch(0);if(touch.phase == TouchPhase.Ended && touchduration < 0.2f){StartCoroutine("SingleOrDouble");}}else{touchduration = 0;}}IEnumerator SingleOrDouble(){yield return new WaitForSeconds(0.3f);if (touch.tapCount == 1){Debug.Log("Single");OnSingleTapped();}else if (touch.tapCount == 2){StopCoroutine("SingleOrDouble");Debug.Log("Double");OnDoubleTapped();}}private void OnSingleTapped(){TriggerAutoFocus();label = "Tap the Screen!";}private void OnDoubleTapped(){label = "Double Tap the Screen!";}public void TriggerAutoFocus(){StartCoroutine(TriggerAutoFocusAndEnableContinuousFocusIfSet());}private IEnumerator TriggerAutoFocusAndEnableContinuousFocusIfSet(){CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);yield return new WaitForSeconds(1.0f);CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);}void OnGUI(){GUI.Label(new Rect(10, 0, 100, 100), "---->" + label);}
}
最后的最后,说说一些综合的东西。
1.测试在手机上面实测,效果比较明显
2.关于vuforia sdk 3.x和4.x的代码异同,当然现在已经去到5.x版本了,不过拾人牙慧,以下上代码:
3.x版本的:
void Start () {CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);}
4.x版本的:
void Start () {Vuforia.CameraDevice.Instance.SetFocusMode(Vuforia.CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);}
附录:相关文章 AR自动对焦
Vuforia应用之相机自动对焦功能相关推荐
- HarmonyOS之深入解析相机的功能和使用
一.简介 ① 概念 HarmonyOS 相机模块支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问.操作和新功能开发,最常见的操作如:预览.拍照.连拍和录像等. 相机静态能力:用于描述相 ...
- 使用S60手机的相机对焦功能
编辑文档 目录 1 开发伙伴平台: 2 详细描述 3 在S60第三版FP2和较新手机上使用自动对焦 4 使用S60第三版和第三版FP1上的自动对焦 编辑本段 回目录开发伙伴平台: S ...
- 相机自动对焦AF原理
相机自动对焦AF原理 AF性能是判断相机好坏的重要指标,主要从准确度和速度两个方面来进行考察,本文将介绍自动对焦的几种方式. 一.凸透镜成像原理 二.三种对焦方法 有公式在手,只要给相机安个测距仪就好 ...
- 相机自动对焦 OpenCV 图像清晰度评价
原文:https://blog.csdn.net/dcrmg/article/details/53543341 OpenCV 图像清晰度评价(相机自动对焦) 版权声明:本文为博主原创文章,转载请注明出 ...
- OpenCV 图像清晰度评价算法(相机自动对焦)
相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...
- OpenCV 图像清晰度评价(相机自动对焦)
最近想实现相机自动对焦,也就是需要图像清晰度评价,在网上查找. 第一个不错文章是:无参考图像的清晰度评价方法 http://nkwavelet.blog.163.com/blog/static/227 ...
- opencv java图片清晰度_OpenCV 图像清晰度评价(相机自动对焦)
相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...
- 用Java实现相机滤镜功能(一)
今天我们来用java实现相机滤镜功能.显然首先要有一个窗体,所以我们创建类来设置窗体,类名取为VideoCapture,这里我们简写一下,让VideoCapture类继承JFrame,作为它的子类,然 ...
- BananaPi上ov5640摄像头自动对焦功能的实现
经过一段时间的学习,找了很多ov5640的资料,终于把自动对焦功能实现了. ov5640是一款用在平板和手机上的摄像头,像素为500W,这个像素在目前来讲不算高,中低端手机的像素都比这个高,但是对于学 ...
最新文章
- Android APK 文件自动安装
- thinkphp5带条件分页
- 欢乐纪中某A组赛【2019.7.10】
- 3.1_ _2_ 内存管理的概念
- bzoj 4031 [HEOI2015]小Z的房间
- 【Flink】Flink ES6写入报错 IncompatibleClassChangeError: Implementing class
- python整型数据源码分析_大师兄的Python源码学习笔记(三): 整数对象
- Python常用模块库下载及安装
- 土方回填施工方案范本_土方回填施工方案范本
- Unity2019最新ECS架构开发MMO游戏笔记更新计划
- 全面的关于OLAP数仓总结
- 高手教你ie主页被篡改怎么办|加个参数永远不怕IE主页被修改
- Unity 生命周期 Reset() 的使用
- 音乐、游戏、教育,谁是字节跳动的下一个“抖音”?
- python程序性能监控
- CSS3中引入多种自定义字体(font-face)
- 有输入和输出的c语言大作业题目,C语言大作业题目2011.pdf
- 云盒子企业私有云对局域网共享软件的代替
- 《地理信息系统导论》 坐标系统 复习题
- C++day06 继承的关系
热门文章
- 自己拥有一台服务器可以做哪些很酷的事情?
- 如何保存卡住的wps_我告诉你wps卡住了怎么办
- intellij idea 类和文件夹(目录)左上角出现小叉号
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC 博客分类: 跟开涛学SpringMVC webmvcjavaeespring跟开涛学SpringMVC Web MVC简介 1.1、We
- java date dec_java – 将日期从“2009-12 Dec”格式转换为“31-DEC-2009”
- python tensorflow车型识别(一):建立数据
- 计算机可以计算出十的一百次方吗,世界上最大的数字单位 古戈尔(1古戈尔等于10的100次方)...
- 自适应动态规划matlab,自适应动态规划ADP
- Skype for Business Server与Microsoft Teams的长期共存模式
- 基于区块链的去中心化存储(区块链存储)的工作流程