OpenCV 播放视频的QT
2016-10-02 20:44
281 查看
video.pro #------------------------------------------------- # # Project created by QtCreator 2016-09-19T00:42:38 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = video TEMPLATE = app SOURCES += main.cpp\ myWidget.cpp HEADERS += myWidget.h FORMS += mainwindow.ui INCLUDEPATH += /usr/local/arm/opencv-install/include/ INCLUDEPATH += /usr/local/arm/opencv-install/include/opencv INCLUDEPATH += /usr/local/arm/opencv-install/include/opencv2 LIBS += /usr/local/arm/opencv-install/lib/libopencv_highgui.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_legacy.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_imgproc.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_flann.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_ml.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_core.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_photo.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_contrib.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_video.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_objdetect.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_nonfree.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_calib3d.so LIBS += /usr/local/arm/opencv-install/lib/libopencv_features2d.so
myWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QPaintEvent> #include <QImage> #include <QTimer> #include "cv.h" #include "highgui.h" class myWidget : public QWidget { Q_OBJECT public: myWidget(const char *filename,QWidget *parent = 0); ~myWidget(); protected: void paintEvent(QPaintEvent *e); private slots: void nextFrame(); private: CvCapture *capture;//highgui 里提供的一个专门处理摄像头图像的结构体 IplImage *iplImg; IplImage *frame;//摄像头每次抓取的图像为一帧,使用该指针指向一帧图像的内存空间 QImage *qImg; QTimer *timer;//定时器用于定时取帧,上面说的隔一段时间就去取就是用这个实现。 }; #endif
main.cpp #include "myWidget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); char *filename = "bike.avi"; myWidget *mw = new myWidget(filename); mw->show(); return a.exec(); }
myWidget.cpp #include "myWidget.h" #include <QPainter> #include <QPoint> myWidget::myWidget(const char *filename,QWidget *parent /* = 0 */) : QWidget(parent) { capture = cvCaptureFromFile(filename); if (capture) { frame = cvQueryFrame(capture); if (frame) this->resize(frame->width,frame->height); qImg = new QImage(QSize(frame->width,frame->height), QImage::Format_RGB888); iplImg = cvCreateImageHeader(cvSize(frame->width,frame->height), 8,3); iplImg->imageData = (char*)qImg->bits(); timer = new QTimer(this); timer->setInterval(30); connect(timer,SIGNAL(timeout()),this,SLOT(nextFrame())); timer->start(); } } myWidget::~myWidget() { cvReleaseImage(&iplImg); cvReleaseCapture(&capture);//释放资源是个好习惯 delete qImg; delete timer; } void myWidget::paintEvent(QPaintEvent *e) { QPainter painter(this); painter.drawImage(QPoint(0,0),*qImg); } void myWidget::nextFrame() { frame = cvQueryFrame(capture);//从摄像头取帧 if (frame) { if (frame->origin == IPL_ORIGIN_TL) { cvCopy(frame,iplImg,0); } else { cvFlip(frame,iplImg,0); } cvCvtColor(iplImg,iplImg,CV_BGR2RGB); this->update(); } }
相关文章推荐
- 4412 ARM+OpenCV +QT播放视频
- QT OpenCV 播放视频
- QT 框架中快速应用OpenCV 基于视频播放
- OpenCV 播放视频的QT 代码
- opencv+QT 视频播放+滚动条
- QT 框架中快速应用OpenCV 基于视频播放
- QT5+opencv3.1实现视频播放加实时直方图
- QT框架中快速应用OpenCV——基于视频播放
- Qt环境下利用opencv逐帧播放视频
- Window 下 Qt5 使用QMediaplayer 进行视频播放 流播放问题
- OpenCV学习笔记【2】:第二个程序--播放AVI视频
- Qt 调用phonon 在xp下不能播放视频的解决方法(Phonon::createPath: Cannot connect Phonon::MediaObject ( no objectName )...)
- 使用opencv进行多路视频的播放
- OpenCV学习之例程详解(02):经典C与现代C++方式播放视频
- Qt使用opencv调用摄像头录制视频并保存文件
- 有关PlayBook NDK Qt SDK播放视频video的资料
- 基于OpenCV 、VS2008 MFC对话框的USB摄像头的控制和视频播放、跟踪(logitech sphere AF网络摄像头)
- Visual Studio+QT+OpenCv实现视频拍照保存功能
- OpenCV简单应用-----播放AVI视频
- opencv播放,变换和保存视频