OpenCV + Unity3D 集成 [英] OpenCV + Unity3D integration

查看:62
本文介绍了OpenCV + Unity3D 集成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am a unity developer trying my hands on opencv for the first time. My initial goal is to run the camera and detect blobs via opencv in unity3d. I am new to OpenCV and am trying to integrate it in Unity3D (on Windows 8 with Unity 4.3.2 and on a mac with Unity 4.2.1f). I followed this thread. But I am getting the following error as soon as I add a new C# script. And the moment I delete this script, the error goes (this script is Unity generated C# script).

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 集成的信息.如果您能帮助我解决此错误并指出我最近的教程以了解更多信息,那就太好了.

I couldn't find much about Unity and OpenCV integration. It would be great if you could help me out with this error and point me to a recent tutorial to learn more.

提前致谢!

推荐答案

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

We recently had to deal with the same problem, I'll post some generic information that would solve your problem and help other people.

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

  1. OpenCV library and your OpenCV project must be compiled as static libraries (see OpenCV as a static library).
  2. OpenCV library and your OpenCV project must be compiled for both 32bit and 64bit architectures.
  3. The 32bit version will be used inside the editor (since the Unity3D editor supports 32bit architectures only), the 64 bit version for production.
  4. The compiled OpenCV project must be copied inside the Asset > Plugins folder, the OpenCV library must be copied inside the Assets folder.
  5. To use your OpenCV project inside a C# script, follow this code example:

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指令!

其他信息来源:

这篇关于OpenCV + Unity3D 集成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆