IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

prendre une photo avec la webcam avec capCreatCaptureWindow


Sujet :

Windows

  1. #1
    Nouveau membre du Club Avatar de samy100
    Inscrit en
    Avril 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 96
    Points : 34
    Points
    34
    Par défaut prendre une photo avec la webcam avec capCreatCaptureWindow
    Bonjour je suis debutant et je voudrai savoir comment utiliser la fonction capCreatCaptureWindow je ne comprend pas la syntaxe car tout sur la msdn est en anglais si vous pouvez m'aider... en fait je veux juste prendre une simple photo et l'enregistrer dans un dossier
    Merci
    Visual C++ Forever and ever ...

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    samy100 a ecrit:
    Bonjour je suis debutant et je voudrai savoir comment utiliser la fonction capCreatCaptureWindow je ne comprend pas la syntaxe car tout sur la msdn est en anglais si vous pouvez m'aider... en fait je veux juste prendre une simple photo et l'enregistrer dans un dossier
    Merci
    Un programme qui fonctionne chez moi il est tire d'un post sur la FAQ C++ BUILDER.
    Il permet la capture d'une image sous la forme d'une photo, il est aussi possible de prendre une serie de photo en activant un TTimer.
    Sur la form il te faut:
    1 TAnimate
    3 TEdit
    6 TButton
    6 TLabel
    1 TTimer
    le code en .h
    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
    //---------------------------------------------------------------------------
    
    #ifndef FicheVideoH // #ifndef FVideoH
    #define FicheVideoH // #define FVideoH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ComCtrls.hpp>
    #include <SysUtils.hpp>
    #include "dstring.h"
    #include "Graphics.hpp"
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
            TButton *Button1;
            TAnimate *Animate1;
            TButton *Button2;
            TButton *Button3;
            TTimer *Timer1;
            TButton *Button4;
            TEdit *Edit1;
            TLabel *Label1;
            TButton *Button5;
            TEdit *Edit2;
            TEdit *Edit3;
            TLabel *Label2;
            TLabel *Label3;
            TLabel *Label4;
            TLabel *Label5;
            TLabel *Label6;
            TButton *Button6;
    
            void __fastcall Button1Click(TObject *Sender);// prise d'une photo
            void __fastcall Button2Click(TObject *Sender);// arret de la camera
            void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
            void __fastcall Button4Click(TObject *Sender);// arret Timer
            void __fastcall Button3Click(TObject *Sender);// demarrer le Timer
            void __fastcall Timer1Timer(TObject *Sender);
            void __fastcall Edit1KeyPress(TObject *Sender, char &Key);
            void __fastcall Button5Click(TObject *Sender);
            void __fastcall Edit2KeyPress(TObject *Sender, char &Key);
            void __fastcall Edit3KeyPress(TObject *Sender, char &Key);
            void __fastcall Button6Click(TObject *Sender);
    
    private:	// User declarations
            HWND Handle; //Handle pour la capture video.
            int i;
            AnsiString temps_calcule;
    public:		// User declarations
            __fastcall TForm1(TComponent* Owner);
    
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    le code en .cpp
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    #include <vfw.h>
    #include "FicheVideo.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    Button3->Visible = false;
    Button4->Visible = false;
    }
    //---------------------------------------------------------------------------
    
    //Si tu cré un bouton en cliquant dessus tu vas sauvegarder une photo .bmp.
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    // prendre une seule photo
    AnsiString Fichier;
    char photo[1024];
    AnsiString chaine;
    AnsiString date_heure;
    	capCaptureSingleFrameOpen(Handle);
    	capCaptureSingleFrame(Handle) ;
    	capCaptureSingleFrameClose(Handle) ;
    // on ajoute un index entre "photo et .bmp" afin d'avoir un nom different
    // afin de ne pas ecraser le nom precedent il y est inclu l'heure et la
    // date sous forme
    // heure, minute, seconde, sans separateur
    // jour, mois, annee, sans separateur
    // il ne faut aucun separateur dans la chaine que l'on
    // envoye comme nom de fichier
    date_heure = FormatDateTime("HHMMSSDDMMYYYY",Now());
    Fichier = ("photo" + IntToStr(i) + date_heure + ".bmp");
    chaine = ("C:\\Documents and Settings\\blondelle\\Mes documents\\PHOTO_WEBCAM\\" + Fichier);
    // copier la photo a l'adresse chaine
    capFileSaveDIB(Handle, chaine.c_str());
    i++;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    // on arrete la WebCam
            // arret de la webcam
    capDriverDisconnect(Handle);
            // effacer Animate
    Animate1->Visible = false;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
    {
    // on arrete la WebCam au cas ou on n'a pas arrete la WebCam
            // arret de la webcam
    capDriverDisconnect(Handle);
            // effacer Animate
    Animate1->Visible = false;
    }
    //---------------------------------------------------------------------------
    
    
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    
    Label5->Caption = "";
    Label6->Caption = "Timer Arreté";
    // et dans ton Timer:
    Timer1->Enabled = false;
    // ShowMessage("Arret timer "); utilise pour les testes
    // ShowMessage("Arret timer ");
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    // For an example of the callback function OneShotCallback, see Writing
    // a Timer Callback Function.
    Label6->Caption = "";
    Label5->Caption = "Timer Demarré";
    // on n'admet pas de temps inférieur a 5 secondes
    if (temps_calcule <= 5)
    {
    temps_calcule = 5000;
    }
    Timer1->Interval = StrToInt (temps_calcule); //60 secondes
    Form1->Label1->Caption = "";
    Form1->Label1->Caption = temps_calcule;
    Timer1->Enabled = true;
    
    if (Timer1->Enabled == true)
    {
    // ShowMessage("timer"); utilise pour les testes
    // ShowMessage("timer");
    }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    AnsiString Fichier;
    char photo[1024];
    AnsiString chaine;
    AnsiString date_aujourdui;
    AnsiString heure;
    	capCaptureSingleFrameOpen(Handle);
    	capCaptureSingleFrame(Handle) ;
    	capCaptureSingleFrameClose(Handle) ;
    // on ajoute un index entre "photo et .bmp" afin d'avoir un nom different
    // afin de ne pas ecraser le nom precedent il y est inclu l'heure et la
    // date sous forme
    // heure, minute, seconde, sans separateur
    // jour, mois, annee, sans separateur
    // il ne faut aucun separateur dans la chaine que l'on
    // envoye comme nom de fichier
    date_aujourdui = FormatDateTime("DDMMYYYY",Now());
    heure = FormatDateTime("HHMMSS",Now());
    Fichier = ("photo" + IntToStr(i) + heure + date_aujourdui + ".bmp");
    chaine = ("C:\\Documents and Settings\\blondelle\\Mes documents\\PHOTO_WEBCAM\\" + Fichier);
    // copier la photo
    capFileSaveDIB(Handle, chaine.c_str());
    i++;
    // ShowMessage("timer"); utilise pour les testes
    // ShowMessage("timer ");
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
    {
    // on ne peux saisir que des chiffres sans decimale
    //if ((Key < '0' || Key >'9') && Key != 8 && (Key != DecimalSeparator ||
    //((TEdit *)Sender)->Text.Pos(DecimalSeparator)!=0))
    //Key = NULL;
    
    if ((Key < '0' || Key >'9') && Key != 8 && (Key == DecimalSeparator)) Key = NULL;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    // on soisi le temps du Timer
    AnsiString heures;
    AnsiString minutes;
    AnsiString secondes;
    
    heures = Edit1->Text;
    if (heures != 0 && heures != "")
    {
    heures = heures * 3600;
    }
    else
    {
    heures = 0;
    }
    minutes = Edit2->Text;
    if (minutes != 0 && minutes != "")
    {
    minutes = minutes * 60;
    }
    else
    {
    minutes = 0;
    }
    secondes = Edit3->Text;
    if (secondes != 0 && secondes != "")
    {
    secondes = secondes;
    }
    else
    {
    secondes = 0;
    }
    temps_calcule = 1000 * (StrToInt (heures) + StrToInt (minutes) + StrToInt (secondes));
    Label1->Caption = "TIMER = " + temps_calcule + " ms";
    // un temps a été choisi alors on affiche les deux boutons
    if (temps_calcule != 0)
    {
    Button3->Visible = true;
    Button4->Visible = true;
    }
    else
    {
    Label1->Caption = "PAS DE TIMER";
    }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
    {
    if ((Key < '0' || Key >'9') && Key != 8 && (Key == DecimalSeparator)) Key = NULL;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
    {
    if ((Key < '0' || Key >'9') && Key != 8 && (Key == DecimalSeparator)) Key = NULL;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button6Click(TObject *Sender)
    {
    
    //Lier le handle à l'animate.
       Handle = Animate1->Handle;
    //Créer une capture video de 640*480.
       Handle = capCreateCaptureWindow( NULL, WS_CHILD|WS_VISIBLE,
                                            0, 0, 640, 480, Handle, 0);
    //Connecter le driver.
       capDriverConnect(Handle, 0);
    //Initialiser le taux de rafraichissement a 66ms.
       capPreviewRate  (Handle, 66);
    //Démarer la preview video.
       capPreview      (Handle, true);
    // ces deux boutons ne s'affichent qu'aprés la saisie d'un temps
    Button3->Visible = false;
    Button4->Visible = false;
    Animate1->Visible = true;
    }
    //---------------------------------------------------------------------------
    FicheVideo.h est le nom donne a la Form lors de la sauvegarde.
    Bon courage A+
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

Discussions similaires

  1. [AC-2010] Prendre une photo avec sa web cam
    Par patrick2103 dans le forum VBA Access
    Réponses: 26
    Dernier message: 06/05/2019, 14h51
  2. prendre une photo avec PDA
    Par ralf91 dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 29/03/2010, 16h23
  3. Prendre une photo avec iPhone
    Par fghjk dans le forum Apple
    Réponses: 3
    Dernier message: 04/11/2009, 09h50
  4. [AC-2000] prendre une photo par webcam
    Par Vil_c dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/07/2009, 11h14
  5. Réponses: 2
    Dernier message: 20/10/2006, 00h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo