如何使用 Unity3D 让网络摄像头自动对焦

Posted

技术标签:

【中文标题】如何使用 Unity3D 让网络摄像头自动对焦【英文标题】:How to ask webcam to auto focus with Unity3D 【发布时间】:2013-09-29 09:13:48 【问题描述】:

目前,我正在使用 Unity3D 开发一些增强现实移动应用程序。性能受图像质量影响。

有没有办法让网络摄像头使用 Unity3D 自动对焦?

【问题讨论】:

嗨flyzhao,你成功了吗?您是否强制网络摄像头或设备摄像头从 Unity 中聚焦? @Joshua 我现在不在处理它。但是你可以从资产商店找到一些安卓原生插件。它可能会解决这个问题。另外,我认为 kao 的回答很好。如果您了解一些有关android的原生知识,这将是最好的方法。 【参考方案1】:

据我所知,这在纯 Unity3D 中是不可能的。

但是,如果你是在 Android 上开发这个,你可以在 java 中编写一个插件,它设置自动对焦并从 Unity3D 调用它。

public void enableAutofocus() 
    camera = camera.open();
    Camera.Parameters parameters = camera.getParameters();
    List<String> focusModes = parameters.getSupportedFocusModes();
    if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) 
        parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
    
    camera.setParameters(parameters);

然后,你必须从 Unity3D 调用你的类:

public class ExampleClass : MonoBehaviour 
    void Start() 
        AndroidJavaObject jo = new AndroidJavaObject("com.mypackage.Autofocus");
        jo.Call("enableAutofocus");
    

您可以找到有关为 Unity3D here 创建 Java 插件的更多信息。

【讨论】:

嗨 Kao,你确定这是可能的吗?你自己试过吗?我的好像不行…… 你能帮我为新的camera2重写这个sn-p吗?我真的很困惑......我只需要enableAutofocus方法来打开相机并设置它的焦点。谢谢

以上是关于如何使用 Unity3D 让网络摄像头自动对焦的主要内容,如果未能解决你的问题,请参考以下文章

Android 开发 Camera1_如何使用自动对焦功能

手机摄像头自动对焦的原理!

海康威视摄像头自动对焦

Android摄像头自动对焦与触摸对焦实现

Android中调用摄像头并自动对焦拍照

Android中调用摄像头并自动对焦拍照