11
votes

Affichage de la vidéo webcam avec qt

J'utilise Qt 4.5 (2009.03) sur Linux Gnome (Ubuntu 9.04) et souhaitez afficher une vidéo capturée par ma webcam dans un phonon :: VideoDidget de mon application QT.

J'ai une première implémentation à l'aide de l'API V4L2 où je fais la conversion YUV2 à RVB et remplir un qImage moi-même. Cela fonctionne bien mais ce n'est pas très efficace. Un collègue a utilisé Gstreamer pour faire la même chose et c'était beaucoup plus rapide.

Depuis lors, j'ai découvert du phonon et j'aimerais l'utiliser. Tout est configuré et configuré à l'exception de la liaison au périphérique Webcam comme source.

Je devrais créer un objet mediaSource, mais je ne sais pas comment le configurer. Toute aide serait grandement précieuse.

edit: the Vue d'ensemble du phonon explique qu'il n'est pas pris en charge encore. Mais j'ai besoin d'une solution.


4 commentaires

J'aimerais pouvoir faire la même chose, mais avec une application de plate-forme croisée fonctionnant sur Windows, Linux et MacOS X


J'ai maintenant une version de travail mais elle utilise uniquement la vidéo pour Linux (V4L). OpenCV est simple à brancher à Qt, mais la résolution d'image est fixée à une valeur faible et est très faible sur Windows. Changer les paramètres de résolution n'a aucun effet. Avec ma version Linux, je n'ai pas cette limitation. Je convertis de YUV, inclinez l'image de 90 ° et copiez tout de suite dans le tampon QImage. Avec 800x600 @ 5FPS, l'utilisation du processeur est très faible.


Avez-vous un morceau de code pour me montrer? J'ai besoin de faire la même chose pour un projet.


+2. Grande question! Je cherche un moyen de faire de Qt pour afficher les séquences vidéo Capture par webcams également. Souhaitez-vous la libérer sous licence publique? Merci!


3 Réponses :


2
votes

Peut-être que vous pouvez jeter un coup d'œil sur la façon dont Kapture a été implémentée.


1 commentaires

J'ai vérifié mais cela ne parvient pas à initialiser la webcam. Le code que j'ai écrit à l'aide de V4L2 fonctionne directement correctement. J'ai vu qu'il convertit les images à la main aussi, ce qui n'est pas bon.



4
votes

Si votre objectif est d'afficher l'image YUV à l'écran, vous pouvez utiliser le module OpenGL. Implémentez la conversion sous forme de fragment Shader. Si vous voulez faire quelque chose d'autre comme économiser l'image convertie en un fichier, ce n'est pas une bonne idée.

Quelques liens:


0 commentaires

5
votes

Je connais son petit peu de retard pour cette question. Mais je cherchais la même chose et je n'ai pas pu trouver une solution pure QT. Voici ma solution https://sourceforge.net/p/qtv4lcapture/code/head / arbre /


0 commentaires