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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#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);
 
 
}
Merci d'avance !