web-dev-qa-db-ja.com

OpenCV + Unity3D統合

私は初めてopencvを試してみるUnity開発者です。私の最初の目標は、カメラを実行し、unity3dのopencvを介してblobを検出することです。私はOpenCVを初めて使用し、Unity3Dに統合しようとしています(Windows8とUnity4.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の統合についてはあまりわかりませんでした。このエラーについて私を助けてくれて、詳細を知るために最近のチュートリアルを教えていただければ幸いです。

前もって感謝します!

8
jainam

最近、同じ問題に対処する必要がありました。あなたの問題を解決し、他の人々を助けるための一般的な情報をいくつか投稿します。

  1. OpenCVライブラリとOpenCVプロジェクトは、静的ライブラリとしてコンパイルする必要があります (静的ライブラリとしてのOpenCVを参照)
  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ディレクティブに注意してください!

その他の情報源:

11