2016-07-11 4 views
0

So habe ich ein Programm, wo ich etwas Verarbeitung mit der OpenCV-Bibliothek tun und dann zeigen die Ergebnisse in einem Qt gemacht gui (auf einem Widget). Die Sache ist, wenn ich die opencv-Implementierung innerhalb der GUI "debuggen" möchte, dh eine Imshow einiger Frames/Masken machen möchte, erzeugt sie das Fenster, aktualisiert es aber nicht sporadisch. Der Versuch, ein waitKey (1) hinzuzufügen, um eine Aktualisierung zu erzwingen, friert die GUI einfach ein, so dass sie eine weitere Sackgasse darstellt.imshow nicht aktualisiert auf qt gui

Haben Sie eine Idee, wie Sie das beheben können? Wenn es nötig ist, werde ich versuchen, ein MWE zu machen, aber mit dem Zustand meines Programms ist es ein bisschen schwierig, die Funktionalität zu extrahieren.

Vielen Dank im Voraus.

+0

Damit eine Qt-GUI reagiert, muss die Ereignisschleife des Hauptthreads die Kontrolle haben. Wenn dies nicht der Fall ist, reagiert die GUI nicht. Das ist alles, normalerweise. Alle blockierenden Methoden wie 'waitKey' oder irgendetwas aus Qt selbst, das mit' waitFor' beginnt, darf niemals im Haupt-Thread verwendet werden! –

+0

Also gibt es keine Möglichkeit, die Imshows zu aktualisieren? :/ – Aram

+0

Natürlich gibt es: Verwenden Sie 'waitKey' usw. nicht, wenn Sie auf einen Tastendruck in der GUI reagieren möchten, verwenden Sie eine Schaltfläche oder einen globalen Beschleuniger oder einen globalen Ereignisfilter. –

Antwort

0

Nun scheint, dass ein

tun
QApplication::ProcessEvents() 

das Bild zwingt, wenn auch sehr langsam zu aktualisieren, aber für Debugging-Zwecke wird es genügen.