Wie schiebe ich ein OpenCV-Bildbetrachtungsfenster in eine QT-GUI mit Visual Studio?

8

Ich möchte eine GUI mit zwei Rechtecken für die Anzeige von Videos erstellen (eines, in dem Sie das Eingangsvideo sehen, eines, wo Sie das nachbearbeitete Video sehen).

Ich möchte, dass es in eine von QT gemachte GUI integriert wird, aber ich möchte, dass diese Videobereiche von OpenCV als Alternative zur Methode cv::nameWindow von OpenCV aufgefüllt werden.

Wie kann ich das tun?

    
zebra 14.01.2012, 18:33
quelle

2 Antworten

8

Der grundlegende Workflow, um das zu tun, was Sie wollen, ist:

  1. Öffnen Sie das Video mit der OpenCV-API (z. B. cvCreateFileCapture)
  2. Ergreife IplImage-Frames aus dem Video (cvQueryFrame)
  3. Konvertiere sie in QImage (siehe beigefügten Code)
  4. Zeige QImage in einem QLabel (QLabel :: setPixmap und QPixmap :: fromImage)
  5. Wiederholen Sie das Frame-Update (z. B. mit einem QTimer mit Video-Framerate)

Code zum Konvertieren von IplImage in QImage (unter der Annahme von RGB32Bits-Bildern):

%Vor%

Das Verständnis des obigen Codes sollte einfach sein. Irgendwelche Zweifel lassen Sie es uns wissen.

Diese "low level" -Option ermöglicht es Ihnen, jeden einzelnen Frame vor der Anzeige zu bearbeiten. Wenn Sie nur ein Video über Qt anzeigen möchten, können Sie das Phonon verwenden Rahmen .

    
borges 15.01.2012, 01:34
quelle
8

Hier ist Code, der ein cv :: Mat in ein QImage konvertiert. Methoden sind für 24bit RGB bzw. Graustufen Fließkomma.

%Vor%

Dann können Sie das QImage in einem Qt-Widget verwenden. Siehe Borges Antwort.

    
ypnos 15.01.2012 01:52
quelle

Tags und Links