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

  1. #ifndef WIDGET_H   
  2. #define WIDGET_H   
  3.   
  4. #include <QWidget>   
  5. #include "iostream"   
  6. #include "stdio.h"   
  7.   
  8. #include "highgui.h"   
  9. #include "cv.h"   
  10. #include <QTimer>   
  11. #include <QImage>   
  12. #include <QPainter>   
  13.   
  14. using namespace std;  
  15.   
  16. #define TIME_OUT    30                  //视频播放间隔时间   
  17. #define FPS         30                  //播放帧率   
  18.   
  19. namespace Ui {  
  20.     class Widget;  
  21. }  
  22.   
  23. class Widget : public QWidget  
  24. {  
  25.     Q_OBJECT  
  26.   
  27. public:  
  28.     explicit Widget(QWidget *parent = 0);  
  29.     ~Widget();  
  30.   
  31. private:  
  32.     Ui::Widget *ui;  
  33.   
  34.     CvCapture *capture;             //视频数据结构   
  35.     IplImage *frame;  
  36.     QTimer *timer;  
  37.     QImage *img;  
  38.   
  39. private slots:  
  40.     void slot_timer();  
  41.   
  42. protected:  
  43.     void paintEvent (QPaintEvent *);  
  44. };  
  45.   
  46. #endif // WIDGET_H  
  • 1
  • 2
  • 下一页

相关内容