|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Futur Membre du Club
![]() Anthony Pasche Inscription : juin 2010 Messages : 30 ![]() |
Bonjour,
Aujourd'hui j'ai voulu réaliser une application C++ visant à modifier en temps réel le flux vidéo de ma webcam. Pour ça j'utilise une méthode callback visant à récupérer le buffer de la frame précédente avant que celle-ci ne remplace la frame courante (si j'ai bien lu la doc). Voici l'aperçu de cette fonction. Code :
LRESULT CALLBACK capVideoStreamCallback(HWND hWnd, LPVIDEOHDR lpVHdr) Code :
Mais le problème vient du faite que ces données sont déjà compressée au format supporté par les drivers de la webcam (ici j'ai 2 format supporté: YUY2 et MJPG) Donc en théorie je devrais m'adapter par rapport au format ou passer sur un format RGB pour traiter les données plus les renvoyé dans le bon format. En faite, c'est à cette partie là que je coince. Le mieux serait que je puisse passer au format RGB peut importe le format de base. Il y avait une solution qui consistait entre la réception de message(PeekMessage) de créer un bitmap à partir du contexte d'affichage (code ci-dessous). Code :
Y a-t-il un moyen d'avoir que le rendu final après le traitement de l'image (en modifiant directement le buffer ?) ou d'utiliser la technique décrite ci-dessus mais en affichant que le rendu final ? Voici le code de mon application ! Code :
Merci d'avance pour vos réponses ! Cordialement, firepolo |
||||||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 321 ![]() |
Bonjour
Ta question est très spécifique, pas sur que arrive à trouver de l'aide ici. Demande peut être dans le forum programmation système. Pourquoi pas OpenCV ? Fais peut être une première version avec OpenCV, puis modifie quand ça fonctionne par du code perso. Tu peux également t'inspirer du code source d'OpenCV Bon courage
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() |
Si je me souviens bien (et si j'ai bien compris que tu utilises VideoForWindows), tu peux créer une fenêtre de capture que tu n'affiches pas (grâce à la fonction capCreateCaptureWindow).
Ensuite, que tu utilises ou pas le mode preview (je ne l'utilise pas, je mets un timer pour charger les frames) tu peux traiter la frame (donc soit récupérée via la callback soit par capGrabFrame) et n'afficher que celle que tu traites toi-même. Par contre la compression, il faut que ce soit toi qui la gères. En YUY2 il y a pas mal de sources qui traînent traitant de la conversion vers RGB, mais le MJPG est plus tordu, je suis passé par LibJPEG qui donne d'excellents résultats.
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
Copyright © 2000-2013 - www.developpez.com