begin process at 2012 05 29 17:00:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Probleme enregistrement image sous QT avec vfw


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme enregistrement image sous QT avec vfw

vendredi 19 février 2010 à 17:04:21 | Probleme enregistrement image sous QT avec vfw

Oelth

Bonjour,
j'ai eu beau fouiller sur de nombreux sites et forum pour régler ce problème, tenté plusieurs solutions, rien n'y fait. Donc en ultime recours je viens vous quémander de l'aide ^^" .
En fait, dans le cadre de mon projet de fin d'année scolaire, je dois (entre autres) réussir à developper une application sous IHM qui permette d'afficher ce que filme une webcam et d'enregistrer une image en bmp pour effectuer un traitement par la suite.
J'ai donc utilisé la librairie <vfw.h> sous l'IDE netbeans, après avoir linké vwf32 à mon projet j'ai commencé à saisir mes fonctions tout seul comme un grand .
Precisons au passage que je developpe sous QT Designer pour l'IHM (et donc le compilo minGW).
Pour l'affichage de la video dans l'IHM pas de soucis, idem pour la gestion du format et autres options, mais pour ce qui est de l'enregistrement de l'image un problème assez ennuyeux persiste.
En fait j'ai un bouton "Enregistrer" de l'IHM, lié à la fonction "Enregistrer_Photo()" de ma classe C_CAMERA.
Dans les parametres de ma fonction capFileSaveDIB(), je passe bien mon handle et un chemin d'enregistrement (ici "D:\\Essai_Camera.bmp"), mais une fois l'enregistrement lancé, je me retrouve (et cela quoi que je fasse) avec un fichier .avi qui ne contient qu'une image (c'est déjà ça) nommé CAPTURE et qui plus est, qui s'enregistre dans C: .
J'ai me suis surement planté quelque part (à moins qu'il y ai des incompatibilitées entre vfw.h et QT ? ) mais je n'arrive pas à trouver où.
Si une âme charitable pouvait me donner un coup de pouce, cela m'enleverait une belle épine du pied ^^" .

Voilà la declaration de ma classe :

Code C/C++ :
#include "ui_C_CAMERA.h"
#include <windows.h>
#include <vfw.h>

class C_CAMERA : public QMainWindow {
    Q_OBJECT
public:
    C_CAMERA();
    virtual ~C_CAMERA();



public slots:

    void Connection();
    void Parametre_Source();
    void Parametre_Affichage();
    void Parametre_Format();
    void Deconnection();
    void Enregistrer_Photo();

private:
    Ui::C_CAMERA widget;
    CAPDRIVERCAPS Caractere;
    CAPTUREPARMS Enregistrement_Video;
    HWND Handle_Video;
};



Et le code de chaques fonctions :

Code C/C++ :
#include "C_CAMERA.h"

C_CAMERA::C_CAMERA() {
    widget.setupUi(this);
    //Initialisation du panel pour la capture video
    Handle_Video = capCreateCaptureWindow(NULL, WS_CHILD | WS_VISIBLE, 10, 10, 320, 240, widget.Espace_Video->winId(), 1);
    //Boutons non utilisables actuellement, cachés
    widget.btn_Affichage->hide();
    widget.btn_Arret_Camera->hide();
    widget.btn_Enregistrer->hide();
    widget.btn_Format->hide();
    widget.btn_Source->hide();
}

C_CAMERA::~C_CAMERA() {
}

void C_CAMERA::Connection() {
    
    if (!capDriverConnect(Handle_Video, 0)) {

        this->close();
    }
    capPreviewScale(Handle_Video, TRUE);
    capPreviewRate(Handle_Video, 5);
    capPreview(Handle_Video, 1);

    

    //Affichage des options actuellement exploitables
    widget.btn_Affichage->show();
    widget.btn_Arret_Camera->show();
    widget.btn_Enregistrer->show();
    widget.btn_Format->show();
    widget.btn_Source->show();
    //Demarrage de la camera et de fermeture masqués
    widget.btn_Fermer->hide();
    widget.btn_Demarrer_Camera->hide();
}

void C_CAMERA::Parametre_Source() {
    // Affichage de la fenetre de reglage de la source video (si le peripherique le permet)
    capDlgVideoSource(Handle_Video);
}

void C_CAMERA::Parametre_Affichage() {
    // Affichage de la fenetre de parametrage de l'affichage (si le peripherique le permet)
    capDlgVideoDisplay(Handle_Video);
}

void C_CAMERA::Parametre_Format() {
    // Affichage de la fenetre de parametrage du format d'image (si le peripherique le permet)
    capDlgVideoFormat(Handle_Video);
}

void C_CAMERA::Deconnection() {
    capDriverDisconnect(Handle_Video);

    //Boutons non utilisables actuellement, cachés
    widget.btn_Affichage->hide();
    widget.btn_Arret_Camera->hide();
    widget.btn_Enregistrer->hide();
    widget.btn_Format->hide();
    widget.btn_Source->hide();
    //Affichage du bouton de demarrage de la camera et celui de fermeture
    widget.btn_Demarrer_Camera->show();
    widget.btn_Fermer->show();
}

void C_CAMERA::Enregistrer_Photo() {
    

    capGrabFrameNoStop(Handle_Video); //Enregistre l'image en memoire sans figer l'affichage
    capCaptureSingleFrameOpen(Handle_Video);
    capCaptureSingleFrame(Handle_Video);
    capFileSaveDIB(Handle_Video, "D:\\Voiture.bmp");
    capCaptureSingleFrameClose(Handle_Video);


Suis je dans la bonne direction ?
Devrais je me rabattre sur une autre solution ? (sachant qu'il faut que je termine cette partie d'ici la moitié de la semaine prochaine pour pouvoir rédiger mon rapport en vue de l'arrivée imminente de mes revues ^^" )

Merci d'avance pour votre aide !


Cette discussion est classée dans : handle, video, camera, btn, widget


Répondre à ce message

Sujets en rapport avec ce message

Besoin d'un code pour une Capture Video [ par ElectricalMan ] Salut tout le monde,Je travail en ce moment sur un projet sous c++ Builder . J'ai grand besoin d'1 code pour lancer une capture video à partir d'une c handle fenetre [ par latisaniere ] Bonjour,Je dois créer sur un clientArea de 800*600, 4 fenêtres à partir d'une source videoA partir de l'acquisition video je fige une image ensuite la Enregistrer une séquence video AVI d'une webcam. [ par satan_666 ] Cette class peut faire la capture avi qui est la meme chose qu'une image, car la longueur est même pas d'une seconde .include void TVideo::CaptureImag CAPYURE VIDEO [ par AXELMEDICAL ] Salut!!Voila je dois créer un logiciel me permettant de faire de la capture video.Explication :L' utilisateur film avec sa camera.1. En cliquant sur u Aquisition de video en C,C++ [ par NnGgHh ] Bonjour, pardon pour les accent, mon clavier est japonais et je n'arrive pas a les activer. Je developpe en C++ sur Mac (c'est proche de la programmat Cadre pour afficher une video [ par mister0zorg ] Bonjour,Je voudrais récupérer le Handle d´un cadre d´affichage, dessiner sur mon application, pour pouvoir afficher une video.J´y comprends rien je do lecture depuis camera avec dc1394 [ par braf78 ] mon probleme quand je compile le grogramme il connait pas fonction de bibliotheque comme (dc1394_cameracapture camera; raw1394handle_t handle; n Creation d'une Video [ par sephiro ] je cherche a créé une video avec une liste de fichier Jpeg ou BMP.Je ne veux pas ecrire un nouveau Codec juste utiliser une librairie ... pour transfo recupperer le handle d'un Objet TImage [ par cyb_dev ] Bonjour a tousj'ai besoin de rcuperer les composantes RGB d'une image, la fonction que le permet est la fonction GetPixel, cependant pr la faire fonct Problème pour passer un tableau dynamique à une fonction [ par muguss ] Je n'arrive pas à passer parfaitement mon tableau dynamique de type HANDLE à ma fonction afin que cette dernière ajoute un HANDLE au tableau, donc l'a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales