Visualisation à partir d'une webcam
Bonsoir à tous,
J'avais besoin de réaliser des traitements sur une image capturée depuis une webcam dans le cadre d'un PFE pour un ami, alors je vous fait profiter de ce qu'il faut pour commencer a exploiter sa Webcam.
Le fichier .pro
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = CamPreview
TEMPLATE = app
SOURCES += main.cpp \
campreiew.cpp
HEADERS += \
campreview.h
LIBS += -lvfw32
FORMS += \
campreview.ui |
le fichier campreview.h
Code:
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
|
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <windows.h>
namespace Ui {
class CamPreviewDialog;
}
class CamPreview : public QDialog
{
Q_OBJECT
public:
explicit CamPreview(QWidget *parent = 0);
~CamPreview();
private slots:
bool camConnect();
bool camDisconnect();
private:
Ui::CamPreviewDialog *ui;
HWND hWndC;
bool connected;
};
#endif // DIALOG_H |
le fichier campreview.cpp
Code:
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
|
#include "campreview.h"
#include "ui_campreview.h"
#include <QWidget>
#include <QDebug>
#include <windows.h>
#include <vfw.h>
CamPreview::CamPreview(QWidget *parent) :
QDialog(parent),
ui(new Ui::CamPreviewDialog)
{
ui->setupUi(this);
ui->pbtnConnect->setEnabled(true);
ui->pbtnDisconnect->setEnabled(false);
connect(ui->pbtnConnect, SIGNAL(clicked()), this, SLOT(camConnect()));
connect(ui->pbtnDisconnect, SIGNAL(clicked()), this, SLOT(camDisconnect()));
connected = false;
//Creation de HANDLE de la fenetre d'affichage en etant un enfant d'un QWidget (capWidget dans mon cas)
hWndC = capCreateCaptureWindow(TEXT("My Capture Window"),
WS_CHILD | WS_VISIBLE, 0, 0, ui->capWidget->width(), ui->capWidget->height(), (HWND) ui->capWidget->winId(), 0);
}
CamPreview::~CamPreview()
{
if (connected)
capDriverDisconnect( hWndC ); //Deconnecter le driver
delete ui;
}
bool CamPreview::camConnect()
{
// Lancer la connection sur le driver de la webcam deux fois
// (Je ne sais pas pourquoi mais c'est le seul moyen que j'ai trouvé
// pour la faire fonctionnée)
bool OK = capDriverConnect(hWndC, 0);
OK = capDriverConnect(hWndC, 0);
if( OK )
{
capPreviewRate(hWndC, 15); // Regler le taux de rafrechissement
capPreviewScale(hWndC, true); // Activer la mise a l'echelle
capPreview(hWndC, true); // Lancer la visualisation
connected = true;
ui->pbtnConnect->setEnabled(false);
ui->pbtnDisconnect->setEnabled(true);
qDebug() << "Connection OK" << endl;
}
else
qDebug() << "Connection ERROR" << endl;
return OK;
}
bool CamPreview::camDisconnect()
{
capPreview(hWndC, false); // Arrêter la visualisation
bool OK = capDriverDisconnect( hWndC ); //Deconnecter le driver
if (OK)
{
connected = false;
ui->pbtnConnect->setEnabled(true);
ui->pbtnDisconnect->setEnabled(false);
qDebug() << "Disconnection OK" << endl;
}
else
qDebug() << "Disconnection ERROR" << endl;
return OK;
} |
le fichier main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#include <QApplication>
#include "campreview.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
CamPreview camPreview;
camPreview.show();
return a.exec();
} |
Le resultat :
Capture d'écran
j'espère que ça sera utile pour quelqu'un.
Merci
Visualisation à partir d'une webcam
Bonjour,
Je vous propose un nouvel élément à utiliser : Visualisation à partir d'une webcam
Visualisation du flux vidéo depuis une webcam en utilisation les API windows + Qt
Qu'en pensez-vous ?