之前写了这样一篇文章:
程序运行在Linux系统中,视频不掉帧,显示很稳定;但是编译之后运行在Arm9开发板时,能感到明显的延迟
解决问题过程中发现这样一个论坛:
总结一下内容:
不妨尝试用多线程+QPainter来显示视频帧
首先是QPainter显示图像,先学习一下 ,核心代码
/* 显示的每帧图像 */
QImage img;
/* 重写父类下的protected方法*/
protected:
void paintEvent(QPaintEvent *);
......
void videoshow::paintEvent(QPaintEvent *){
try{
QPainter painter(this);
if(!img.isNull()){
painter.drawImage(QPointF(0,0),img);
}
}catch(...){}
}
这里选择不缩放显示图像,参考以下函数
官方文档:
QT使用线程主要有两种方法,其中之一就是继承QThread,然后重写run()
的方法
class V4l2Thread : public QThread{
public:
explicit V4l2Thread(QWidget *parent = 0);
~V4l2Thread();
/* QThread 虚函数 run */
void run();
}
void V4l2Thread::run(){
/* V4l2的编程就可以写在`run()`函数中 */
}
线程的启动start()
,线程的销毁destroyed()
/* 实例化V4l2Thread */
t = new V4l2Thread();
......
t.start();
......
t->destroyed();
因篇幅问题不能全部显示,请点此查看更多更全内容