Implementierung der Inter-Thread-Kommunikation in Qt

Ich habe Probleme, das folgende Szenario zu implementieren. Meine Problemstellung lautet wie folgt:

Ich habe 3 Threads. ThreadCamera zum Aufnehmen von Bildern von einer Kamera. ThreadProzess zur Verarbeitung (Bildbearbeitung mit OpenCV für das Bild / den Frame) des Frames und des Haupt-GUI-Threads zur Anzeige des Bildes.Ich weiß nicht, wie viel Zeit ThreadProcess benötigt, um ein Bild zu verarbeiten. Daher möchte ich das Bild von ThreadCamera an ThreadProcess übergeben, eine Bildverarbeitung für das Bild durchführen und es zur Anzeige an den Haupt-GUI-Thread übergeben.Wenn ThreadProcess das Bild verarbeitet, sollte die ThreadCamera in den Ruhezustand versetzt werden. Das heißtEs sollte keine weiteren Bilder von der Kamera aufnehmen. Wenn der ThreadProcess die Bildverarbeitungsaufgabe beendet hat, sollte er das Bild und einige Informationen an den Haupt-GUI-Thread übergeben. Danach sollte nur die ThreadCamera aufwachen und das nächste Bild von der Kamera aufnehmen, die in diesem Thread (ThreadCamera) läuft.

Vielen Dank, Jungs ... nach einigen Kommentaren, um Kamera- und Bildverarbeitungsjob in einem einzigen Thread zu platzieren, würde ich gerne einen anderen Punkt wissen ... was ist ...

Was ist, wenn ich die Kamera nicht einschlafen möchte, während die Verarbeitung läuft? Es ist mir egal, ob ich einige der von CameraThread erfassten Bilder verliere.

Ich verwende QObject für jeden Prozess (Kameraprozess- und Bildverarbeitungsjob) und den Befehl movetoThread, damit es in einem bestimmten Thread ausgeführt wird.

Jeder Einblick in die Implementierung und das Signal / Slot-Design ist hilfreich.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage