QImage avec data:image/png;base64
-
Bonjour à toutes et à tous,
J'ai un léger souci concernant un projet développé en Qt 6 + QML avec une partie C++.
J'aimerais afficher une image provenant d'une caméra dans un QImage via l'encodage data:image/png;base64.J'ai récupéré en <debug> le contenu de ma variable et je l'ai copié sur le site web :https://base64.guru/converter/decode/image/png, pour tester, et j'obtiens bien l'image.
Je dois (très certainement) mal m'y prendre côté QML ...
Merci pour votre aide,
Bien Cordialement, -
Bonjour,
Comment est-ce que vous le faite à l'heure actuelle ?
Est-ce un flux vidéo ou une image fixe ? -
Bonjour,
Pour répondre à la question : effectivement, j'aimerais à terme un flux vidéo.
Sinon, j'ai trouvé le souci pour afficher une image, en fait, côté QML, la largeur et hauteur de l'image proviennent également du "imageProvider" ... je les modifiais bien mais j'avais oublié l'appel aux signaux (emit imageChanged())
Merci,
-
Dans ce cas, le module QtMultimedia fournit déjà les outils nécessaires.
-
J'ai lu sur le site de Qt : Supported backends
With Qt 6 we have also revisited the supported backends and reduced those to a set we believe can be supported in the future. In Qt 5, we had for example three completely different backend implementations on Windows, using DirectShow, WMF and a separate WMF based implementation for WinRT.In Qt 6, the currently supported set is:
Linux, using GStreamer
macOS and iOS using AVFoundation
Windows using WMF
Android using the MediaPlayer and Camera Java APIs
Support for QNX is planned for Qt 6.3. We might also have low level audio working on WebAssembly in time for 6.2. In addition we still have code for low level audio support on Linux using PulseAudio or ALSA, but those are currently not tested or supported. Depending on demand we might bring those back in a later release.Donc depuisQt 6, il n'y a plus la possibilité d'utiliser 'Direct Show'...
Merci,
-
Le backend par défaut est ffmpeg depuis 6.5.
Pour Direct Show, pour autant que je sache, non.
Est-ce que cette caméra offre d'autres interfaces / API pour accéder aux images qu'elle génère ?
-
Re Bonjour,
J'ai réussi à faire un petit programme de test de "vidéo streaming" en utilisant OpenGL.
Du coup, j'aimerais intégrer ce code dans mon application QML, mais je n'ai jamais réalisé de rendu de scène OpenGL en QML.
Comment faire ? Je viens de lire d'utiliser la classe 'QQuickFramebufferObject ' ?Merci,
-
Je ne l'ai pas fait non plus mais je partirais de cet exemple: https://doc.qt.io/qt-6/qtquick-scenegraph-openglunderqml-example.html
-
Bonjour,
J'ai réussi à afficher un rectangle rouge dans un QML à partir de code C++ avec l'aide de la classe 'QQuickFramebufferObject ' et un renderer associé.
De la même façon, j'essaie maintenant d'afficher une image en 'unsigned char' et cela n'affiche rien ... et je ne trouve pas grand chose sur ce sujet sur le net.
Merci pour vos idées,
-
À ta place pour afficher une vidéo avec un format custom, j'utiliserais QtMultimedia en construisant des QVideoFrame et en les passant à un QVideoSink.
-
Sinon entre temps, j'ai réussi à faire afficher sous OpenGL et QML avec 'QQuickFramebufferObject ', une image provenant d'un tableau d'unsigned char. J'ai rajouté un timer, et je fais évoluer ce tableau toutes les secondes avec rafraîchissement à l'écran.
-
Bonjour,
J'ai réussi à faire ce dont j'avais en tête.
Utilisation de Qt 6.7.1 avec QML et openGL pour afficher des images en mode "stream video" à partir d'une caméra de la marque Flir, ou toute autre caméra qui n'est pas compatible "Windows Media Foundation" mais "Direct show" : ce qui n'est plus possible depuis Qt6.Par contre, je ne peux pas joindre les fichiers sources de mon programme de tests, désolé.