Ubuntu下基于Qt+OpenCV控制摄像头
Ubuntu下基于Qt+OpenCV控制摄像头
环境:Ubuntu 10.04 + OpenCV2.2.0 + Qt4.7.0
OpenCV下控制摄像头是容易的,提供的highgui库调用linux本身的v4l2机制就能控制摄像头.在这里我与qt混合编程,在qt中开一个30ms的定时器,不断通过摄像头捕捉图像,这30ms就是帧速。
捕捉的图像在OpenCV中是IplImage类型,在qt中调用图像一般是QImage类型,所以需要进行一个格式转换,而且捕捉到的图像颜色是BGR,需要转换城RGB。摄像头捕捉的图像显示窗口为QWidget部件。
源代码:
widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
- #include <QWidget>
- #include "iostream"
- #include "stdio.h"
- #include "highgui.h"
- #include "cv.h"
- #include <QTimer>
- #include <QImage>
- #include <QPainter>
- using namespace std;
- #define TIME_OUT 30 //视频播放间隔时间
- #define FPS 30 //播放帧率
- namespace Ui {
- class Widget;
- }
- class Widget : public QWidget
- {
- Q_OBJECT
- public:
- explicit Widget(QWidget *parent = 0);
- ~Widget();
- private:
- Ui::Widget *ui;
- CvCapture *capture; //视频数据结构
- IplImage *frame;
- QTimer *timer;
- QImage *img;
- private slots:
- void slot_timer();
- protected:
- void paintEvent (QPaintEvent *);
- };
- #endif // WIDGET_H
|
评论暂时关闭