問題描述
我是一名統一開發人員,第一次嘗試使用 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.
- OpenCV 庫和您的 OpenCV 項目必須編譯為靜態庫 (參見 OpenCV作為靜態庫).
- OpenCV 庫和您的 OpenCV 項目必須針對 32 位和 64 位架構進行編譯.
- 編輯器內部將使用 32 位版本(因為 Unity3D 編輯器僅支持 32 位架構),64 位版本用于生產.
- 編譯后的 OpenCV 項目必須復制到 Asset > Plugins 文件夾中,OpenCV 庫必須復制到 Assets 文件夾中.
要在 C# 腳本中使用您的 OpenCV 項目,請遵循以下代碼示例:
- OpenCV library and your OpenCV project must be compiled as static libraries (see OpenCV as a static library).
- OpenCV library and your OpenCV project must be compiled for both 32bit and 64bit architectures.
- The 32bit version will be used inside the editor (since the Unity3D editor supports 32bit architectures only), the 64 bit version for production.
- The compiled OpenCV project must be copied inside the Asset > Plugins folder, the OpenCV library must be copied inside the Assets folder.
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
指令!
其他信息來源:
- Unity 手冊:插件
這篇關于OpenCV + Unity3D 集成的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!