2014-06-07 14 views
8

Sono uno sviluppatore di unità che prova le mie mani su Opencv per la prima volta. Il mio obiettivo iniziale è far funzionare la fotocamera e rilevare i BLOB tramite opencv in unity3d. Sono nuovo di OpenCV e sto cercando di integrarlo in Unity3D (su Windows 8 con Unity 4.3.2 e su un Mac con Unity 4.2.1f). Ho seguito il thread this. Ma sto ottenendo il seguente errore non appena aggiungo un nuovo script C#. E nel momento in cui elimino questo script, l'errore va (questo script è uno script C# generato da Unity).Integrazione OpenCV + Unity3D

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 

Non sono riuscito a trovare molto sull'integrazione di Unity e OpenCV. Sarebbe bello se tu potessi aiutarmi con questo errore e indicarmi un tutorial recente per saperne di più.

Grazie in anticipo!

risposta

9

Recentemente abbiamo dovuto affrontare lo stesso problema, pubblicherò alcune informazioni generiche che potrebbero risolvere il tuo problema e aiutare le altre persone.

  1. La libreria OpenCV e il progetto OpenCV devono essere compilati come librerie statiche (see OpenCV as a static library).
  2. La libreria OpenCV e il progetto OpenCV devono essere compilati per architetture sia a 32 bit che a 64 bit.
  3. La versione a 32 bit verrà utilizzata all'interno dell'editor (poiché l'editor Unity3D supporta solo le architetture a 32 bit), la versione a 64 bit per la produzione.
  4. Il progetto OpenCV compilato deve essere copiato nella cartella Risorse> Plugin, la libreria OpenCV deve essere copiata nella cartella Risorse.
  5. Per utilizzare il progetto di OpenCV all'interno di una sceneggiatura # C, seguire questo esempio di codice:

    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(); 
        } 
    } 
    

    prestare attenzione alle direttive using!

Altre fonti di informazione:

+0

Grazie @albemala! Lo proverò. – jainam

+0

@jainam e ti preghiamo di darci un aggiornamento, se ha funzionato! –

+0

puoi pubblicare un progetto di esempio su github? come stai assicurandoti che l'integrazione della telecamera funzioni con l'unità – ina