2017-10-25 13 views
0

ich eine seltsamen confict gefunden, wenn Emgu mit Klasse mit ‚Imageviewer‘C# GTK 2 & 3 Konflikt bei der Verwendung von Emgucv

Wenn ich habe kein statisches Klassenmitglied, arbeitet alles gut. beispielsweise Code wie unten

using Emgu.CV; 
using Emgu.CV.Util; 
using Emgu.CV.UI; 

namespace TmpTest 
{ 
    class TmpTest 
    { 
     private Mat img = new Mat(); // a non-static class member is OKey 
     public static void Main(string[] arg) 
     { 
      SDKWrapper util = new SDKWrapper(); 
      ImageViewer viewer = new ImageViewer(); 
      VideoCapture capture = new VideoCapture(); 

      Application.Idle += new EventHandler (delegate(object sender, EventArgs e) { 
       Mat read_frame = capture.QueryFrame(); 
       util.processFrame(read_frame); 
       util.drawSkeleton(read_frame); 
       viewer.Image = read_frame; 
      }); 
      viewer.ShowDialog(); 
      return; 
     } 
    } 
} 

Aber sobald ich eine statische Klasse Mitglied hinzufügen, zum Beispiel, private Mat img in private static Mat img ändern, bekam ich einen Laufzeitfehler sofort wie diese

Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported 

Ich bin mit ubuntu 16.04 und monodevelopment weiss jemand was passiert ist und wie kann man es lösen?

Antwort

0

Emgu CV ist ein .Net Wrapper für OpenCV. Abhängig von der OpenCV-Version, die Sie verwenden, kann es gegen GTK 2 oder GTK 3 erstellt werden, ist aber in der Regel gegen GTK 2. Eine Anwendung kann jedoch GTK 2 und GTK 3 nicht gleichzeitig verwenden. Ich denke also, der OpenCv-Teil verwendet GTK 2 und Sie haben etwas anderes, GTK 3 zu ziehen. Sie sollten überprüfen, auf welche Bibliotheken die Binärdateien von emgu CV, die Sie verwenden, abhängen.

Verwandte Themen