OpenCV + Unity3D integration

本文关键字:integration Unity3D OpenCV | 更新日期: 2023-09-27 18:07:06

我是一个unity开发者,第一次尝试使用opencv。我最初的目标是在unity3d中通过opencv运行相机并检测blobs。我是OpenCV的新手,我试图将其集成在Unity3D中(在Windows 8上使用Unity 4.3.2,在mac上使用Unity 4.2.1f)。我沿着这条线走。但我得到以下错误,只要我添加一个新的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集成的信息。如果你能帮助我解决这个错误,并指出我最近的教程,以了解更多,那将是伟大的。

提前感谢!

OpenCV + Unity3D integration

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

    OpenCV库和你的OpenCV项目必须被编译为静态库(参见OpenCV作为静态库)。
  1. OpenCV库和你的OpenCV项目必须在32位和64位架构下编译。
  2. 32位版本将在编辑器内部使用(因为Unity3D编辑器只支持32位架构),64位版本用于生产。
  3. 编译后的OpenCV项目必须复制到Asset> Plugins文件夹中,OpenCV库必须复制到Assets文件夹中。
  4. 要在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指令!

其他信息来源:

  • 统一手册:插件