参考:http://blog.csdn.net/augusdi/article/details/8865541

代码如下:

注意,要在ui界面上放置一个“Vertical Layout”控件,调整到合适大小

#include <QtWidgets/QMainWindow>
#include <QPaintEvent>
#include <QTimer>
#include <QPainter>
#include <QPixmap>
#include <QLabel>
#include <QImage>
#include <opencv.hpp>
#include "ui_mainwindow.h"
using namespace cv;
class mainwindow : public QMainWindow
{
	Q_OBJECT

public:
	mainwindow(QWidget *parent = 0);
	~mainwindow();
public slots:
	void updateImage();
private:

	QTimer theTimer;
	Mat srcImage;
	VideoCapture videoCap;
	QLabel *imageLabel;

	Ui::mainwindowClass ui;

protected:
	void paintEvent(QPaintEvent *e);
};

  

mainwindow::mainwindow(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	connect(&theTimer, &QTimer::timeout, this, &mainwindow::updateImage);
	//从摄像头捕获视频
	if(videoCap.open(0))
	{
		srcImage = Mat::zeros(videoCap.get(CV_CAP_PROP_FRAME_HEIGHT), videoCap.get(CV_CAP_PROP_FRAME_WIDTH), CV_8UC3);
		theTimer.start(33);
	}
	//设置显示视频用的Label
	imageLabel = new QLabel(this);
	ui.verticalLayout->addWidget(imageLabel);
}

mainwindow::~mainwindow()
{

}

void mainwindow::paintEvent(QPaintEvent *e)
{
	//显示方法一
	QPainter painter(this);
	QImage image1 = QImage((uchar*)(srcImage.data), srcImage.cols, srcImage.rows, QImage::Format_RGB888);
	painter.drawImage(QPoint(20,20), image1);
	//显示方法二
	QImage image2 = QImage((uchar*)(srcImage.data), srcImage.cols, srcImage.rows, QImage::Format_RGB888);
	imageLabel->setPixmap(QPixmap::fromImage(image2));
	imageLabel->resize(image2.size());
	imageLabel->show();
}

void mainwindow::updateImage()
{
	videoCap>>srcImage;
	if(srcImage.data)
	{
		cvtColor(srcImage, srcImage, CV_BGR2RGB);//Qt中支持的是RGB图像, OpenCV中支持的是BGR
		this->update();	//发送刷新消息
	}
}

  演示结果:

qt上用opencv显示摄像头视频的更多相关文章

  1. 在Jetson TX2上捕获、显示摄像头视频

    参考文章:How to Capture and Display Camera Video with Python on Jetson TX2 与参考文章大部分都是相似的,如果不习惯看英文,可以看看我下 ...

  2. 在Jetson TX2上显示摄像头视频并使用python进行caffe推理

    参考文章:How to Capture Camera Video and Do Caffe Inferencing with Python on Jetson TX2 与参考文章大部分都是相似的,如果 ...

  3. opencv 显示摄像头数据

    本文章是一个小例子,主要是在ubuntu 系统中利用Opencv 显示摄像头的数据 ,显示到对话框中. 1.建立一个  main.cpp #include<opencv2/core/core.h ...

  4. Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比

    打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类,使用都很简单,这篇文章就记录一下Video ...

  5. [OpenCV]获取摄像头视频

    环境:Windows 8 64bit + VS2012 X64 + OpenCV 2.4.7 摄像头的捕捉使用VideoCapture类 Class VideoCapture    [OpenCV文档 ...

  6. 在Jetson TX2上安装OpenCV(3.4.0)

    参考文章:How to Install OpenCV (3.4.0) on Jetson TX2 与参考文章大部分都是相似的,如果不习惯看英文,可以看看我下面的描述 在我们使用python3进行编程时 ...

  7. 使用opencv显示视频的方法

    下面对使用opencv显示视频做一个简单的记录.当然,网上这方面的资料已经数不胜数了,我只是将其简单记录,总结一下. 在opencv中显示视频主要有: (1)从本地读取视频和调用摄像头读取视频 (2) ...

  8. Kinect SDK(1):读取彩色、深度、骨骼信息并用OpenCV显示

    Kinect SDK 读取彩色.深度.骨骼信息并用OpenCV显示 一.原理说明 对于原理相信大家都明白大致的情况,因此,在此只说比较特别的部分. 1.1 深度流数据: 深度数据流所提供的图像帧中,每 ...

  9. crtmpserver的安装,摄像头视频测试

    下载 svn co --username anonymous --password "" https://svn.rtmpd.com/crtmpserver/branches/1. ...

随机推荐

  1. js获取客户端操作系统

    function detectOS() { var sUserAgent = navigator.userAgent; var isWin = (navigator.platform == " ...

  2. 谓词的使用 -ios

    #import <Foundation/Foundation.h> @interface Person : NSObject<NSCopying> @property(nona ...

  3. QQ登入(1)-有客户端直接授权,没客户端web授权

    准备jar文件3个: android-support-v4.jar 下载地址:http://pan.baidu.com/s/1eQmoTm6 mta-sdk-1.6.2.jar 下载地址:http:/ ...

  4. Understanding virtualxid && transactionid

    对pg_locks视图中的virtualxid和transactionid字段感到困惑,经查阅资料,特此在此整理一下学习内容: pg_locks Columns Name Type Reference ...

  5. oracle进程

    http://blog.csdn.net/leshami/article/details/5529239 Oracle实例和Oracle数据库(Oracle体系结构) 几类进程:用户进程,服务进程,后 ...

  6. 关于sphinx+PHP在高并发时响应性能低下的解决办法

    经过多次压力测试,发现sphinx在高并发时出现负载突然提升,并且响应速度明显下降.经过多方面的排查,发现是由于PHP与sphinx自带的 searchd进行socket的连接之后,系统内存有大量的T ...

  7. maven 常见错误解决

    1. maven打包编译时后台一直输出警告信息 [WARNING] File encoding has not been set, using platform encoding GBK, i.e. ...

  8. 【mybaits】Mybatis中模糊查询的各种写法

    工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{t ...

  9. Flex外包团队—开发工具:Flex4.6新特性介绍

    在今年初,Adobe发布了其第一个支持移动应用程序开发的Flex SDK和Flash Builder版本.Flex 4.5引入了一组移动优化的组件和移动优化的应用程序框架,而Flash Builder ...

  10. IOS开发之自定义系统弹出键盘上方的view(转载)

    这篇文章解决的一个开发中的实际问题就是:当弹出键盘时,自定义键盘上方的view.目前就我的经验来看,有两种解决方法.一个就是利用UITextField或者UITextView的inputAccesso ...