4412 ARM+OpenCV +QT播放视频
2016-09-19 16:23
316 查看
// 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; IplImage *iplImg; IplImage *frame; QImage *qImg; QTimer *timer; }; #endif
// 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) //paintEvent函数是重载的,目的是为了更新绘图 { 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(); } }
主函数里面调用
#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(); }
快捷键
加粗Ctrl + B
斜体
Ctrl + I
引用
Ctrl + Q
插入链接
Ctrl + L
插入代码
Ctrl + K
插入图片
Ctrl + G
提升标题
Ctrl + H
有序列表
Ctrl + O
无序列表
Ctrl + U
横线
Ctrl + R
撤销
Ctrl + Z
重做
Ctrl + Y
相关文章推荐
- QT5+opencv3.1实现视频播放加实时直方图
- QT 框架中快速应用OpenCV 基于视频播放
- QT框架中快速应用OpenCV——基于视频播放
- QT 框架中快速应用OpenCV 基于视频播放
- Qt +Opencv 在ARM-A9上视频拍照
- opencv+QT 视频播放+滚动条
- OpenCV 播放视频的QT 代码
- OpenCV 播放视频的QT
- Qt环境下利用opencv逐帧播放视频
- QT OpenCV 播放视频
- Qt+OpenCV移植到arm上采集摄像头视频 请注意
- 1.0.1-学习Opencv与MFC混合编程之---播放AVI视频
- [学习OpenCV攻略][005][视频播放控制]
- opencv实现视频播放
- Qt使用opencv调用摄像头录制视频并保存文件
- 基于qt和opencv的远程视频监控与播放
- opencv实现视频播放时滑动条滑动
- opencv学习笔记(二)——播放AVI视频(上)
- opencv2/3播放视频实现进度条显示拖动、快进、快退、逐帧播放、显示当前帧于图像
- qt中用SDL 1.3实现播放视频双窗口(附源代码)