【问题标题】:OpenCV + Unity3D integrationOpenCV + Unity3D 集成
【发布时间】:2014-06-07 10:40:47
【问题描述】:

我是一名统一开发人员,第一次尝试使用 opencv。我最初的目标是在 unity3d 中通过 opencv 运行相机并检测 blob。我是 OpenCV 的新手,正在尝试将其集成到 Unity3D 中(在 Windows 8 上使用 Unity 4.3.2 和在 Mac 上使用 Unity 4.2.1f)。我关注了this 线程。但是,一旦添加新的 C# 脚本,我就会收到以下错误。当我删除这个脚本时,错误就出现了(这个脚本是 Unity 生成的 C# 脚本)。

Internal compiler error. See the console log for more information. output was:
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
  at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
  at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 

我找不到太多关于 Unity 和 OpenCV 集成的信息。如果您能帮助我解决这个错误并指出我最近的教程以了解更多信息,那就太好了。

提前致谢!

【问题讨论】:

    标签: c# opencv camera mono blob


    【解决方案1】:

    我们最近不得不处理同样的问题,我将发布一些通用信息,可以解决您的问题并帮助其他人。

    1. OpenCV 库和您的 OpenCV 项目必须编译为静态库(see OpenCV as a static library)
    2. OpenCV 库和您的 OpenCV 项目必须针对 32 位和 64 位架构进行编译。
    3. 编辑器内部将使用 32 位版本(因为 Unity3D 编辑器仅支持 32 位架构),64 位版本用于生产。
    4. 编译后的 OpenCV 项目必须复制到 Asset > Plugins 文件夹中,OpenCV 库必须复制到 Assets 文件夹中。
    5. 要在 C# 脚本中使用您的 OpenCV 项目,请遵循以下代码示例:

      using UnityEngine;
      using System.Collections;
      using System;
      using System.Runtime.InteropServices;
      
      public class PluginImport : MonoBehaviour {
          //Lets make our calls from the Plugin
          [DllImport ("OpenCVProject")]
          private static extern int openCVFunction(); 
      
          void Start () {
              openCVFunction();
          }
      }
      

      注意using 指令!

    其他信息来源:

    【讨论】:

    • 谢谢@albemala!我会试试看。
    • 你能在github上发布一个示例项目吗?您如何确保相机集成与统一工作
    • 所以这里的工作流程是构建opencv项目(如,让它运行)和库,然后将它添加到unity3d?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2016-04-10
    • 2014-08-25
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多