00001 /* 00002 This file is one part of two, that together make 00003 QOpenCamWidget, a Qt 4 widget that displays video input 00004 from a webcam, along with an optional snapshot button. 00005 00006 Copyright (C) 2009 Jon Langseth 00007 00008 This program is free software; you can redistribute it and/or 00009 modify it under the terms of the GNU General Public License 00010 as published by the Free Software Foundation in its version 2 00011 of the License. 00012 00013 This program is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with this program; if not, write to the Free Software 00020 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00021 */ 00022 00023 #ifndef QOPENCVWIDGET_H 00024 #define QOPENCVWIDGET_H 00025 #include <QtGui> 00026 #include <opencv/cv.h> 00027 #include <opencv/highgui.h> 00028 00029 class QOpenCamWidget 00030 : public QWidget 00031 { 00032 Q_OBJECT 00033 00034 private: 00035 CvCapture *capture; 00036 QTimer *frametimer; 00037 QImage *nextFrame; 00038 //QImage *snapshot; 00039 QLabel *canvas; 00040 QVBoxLayout *layout; 00041 QPushButton *trigger; 00042 bool trigger_active; 00043 00044 public: 00045 // Defaults, standard elements ;) 00046 QOpenCamWidget(QWidget *parent = 0); 00047 ~QOpenCamWidget(void); 00048 00049 // Overides, reimplementation of abstract 00050 void paintEvent ( QPaintEvent * event ); 00051 00052 // Public methods specific to this class 00053 void setSnapshotVisible( bool visible ); 00054 bool grabCapture(int source); 00055 void startCapture(void); 00056 QImage* Ipl2QImage(const IplImage *img); 00057 00058 public slots: 00059 void grabFrame(void); 00060 void startSnap(); 00061 signals: 00062 void imageReady(QImage snapshot); 00063 }; 00064 00065 #endif 00066