2009-09-04 6 views
11

Ich benutze Qt 4.5 (2009.03) auf Linux Gnome (Ubuntu 9.04) und möchte Videos von meiner Webcam in einem Phonon :: VideoWidget meiner Qt-Anwendung darstellen.WebCam-Video mit Qt anzeigen

Ich habe eine erste Implementierung mit der v4l2-API, wo ich die YUV2 zu RGB-Konvertierung und füllen Sie ein QImage mein Selbst. Es funktioniert gut, aber es ist nicht sehr effizient. Ein Kollege benutzte gStreamer, um das Gleiche zu tun und es war viel schneller.

Seitdem habe ich über Phonon herausgefunden und möchte es verwenden. Bis auf die Bindung an das Webcam-Gerät als Quelle ist alles konfiguriert und eingerichtet.

Ich sollte ein MediaSource-Objekt erstellen, aber ich weiß nicht, wie es konfiguriert wird. Jede Hilfe wäre sehr wertvoll.

Bearbeiten: Die Phonon overview erklärt, dass es noch nicht unterstützt wird. Aber ich brauche eine Lösung.

+0

Ich wünschte, ich könnte das gleiche, aber mit einer Cross-Plattform-Anwendung arbeiten unter Windows, Linux und MacOS X – Natim

+1

Ich habe jetzt eine funktionierende Version, aber es verwendet nur Video für Linux (v4l). opencv ist einfach in Qt einstecken, aber die Bildauflösung ist auf einen niedrigen Wert festgelegt und es ist sehr niedrig bei Windows. Das Ändern der Auflösungsparameter hat keine Auswirkungen. Mit meiner Linux-Version habe ich diese Einschränkung nicht. Ich konvertiere von yuv, kippe das Bild um 90 ° und kopiere es sofort in den QImage-Puffer. Mit 800x600 @ 5fps ist die CPU-Auslastung sehr gering. – chmike

+0

Hast du ein Stück Code, um es mir zu zeigen? Ich muss dasselbe für ein Projekt tun. – Natim

Antwort

2

Vielleicht können Sie einen Blick auf die Art und Weise kapture wurde implementiert.

+0

Ich überprüfte, aber es initialisiert die Webcam nicht. Der Code, den ich mit v4l2 geschrieben habe, funktioniert direkt. Ich sah, dass er Bilder auch von Hand konvertiert, was nicht gut ist. – chmike

4

Wenn Sie das YUV-Bild auf dem Bildschirm anzeigen möchten, können Sie das OpenGL-Modul verwenden. Implementieren Sie die Konvertierung als Fragment-Shader. Wenn Sie etwas anderes machen möchten, wie das konvertierte Bild in eine Datei speichern, ist das keine gute Idee.

Einige Links:

5

Ich weiß, ihr wenig spät für diese Frage. aber ich war auf der Suche nach dem gleichen Ding und konnte keine reine qt Lösung finden. Ich fand http://qt-apps.org/content/show.php/Qt+Opencv+webcam+viewer?content=89995 das hängt davon ab, Opencv, die ich nicht weiß, und ich möchte nicht lernen.

und hier ist meine Lösung http://qt-apps.org/content/show.php/V4lCapture?content=126541

eine Sache ihren Faden ein wenig mehr poliert werden muss, aber es funktioniert trotzdem.