【问题标题】:Take photo using webcam is giving black output[Unity3D]使用网络摄像头拍照会产生黑色输出[Unity3D]
【发布时间】:2015-12-03 07:48:24
【问题描述】:

我在 Stackoverflow 问题Can I take a photo in Unity using the device's camera? 中使用了@Bart 给出的代码,并进行了一些修改。但结果是一张全黑的照片。

我想补充一点,脚本附加到具有渲染器的立方体上。 渲染器也被弃用了,因此我不得不使用 GetComponents()。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    我想在你拍摄的那一刻,渲染还没有完成,因为渲染发生在帧的后期。

    您很可能应该使用协程并等待帧结束

    yield return new WaitForEndOfFrame();
    

    或者使用来自正在渲染进程的摄像头的回调OnPostRender

    【讨论】:

    • 您能否详细说明我应该在哪里添加此代码。还请更详细地解释原因。我无法理解渲染部分
    • 把你的 Snapshot 方法变成协程 IEnumerator Snapshot 并用 StartCoroutine 调用它。在方法开始时,使用 yield 等待帧结束。然后运行该方法的其余部分。我不能说我确定它是你的解决方案。但是渲染是在帧结束时完成的,所以等待会修复它。
    • 感谢您的回答,它帮助了我....我将编辑您的答案,以便详细说明
    【解决方案2】:

    另外

    yield return new WaitForEndOfFrame();
    

    在协程中调用可能需要添加一些延迟。

    对我来说避免黑色输出工作(不是最优雅的解决方案):

    yield return new WaitForEndOfFrame();
    yield return new WaitForSeconds(1f); //Customize
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      相关资源
      最近更新 更多