一、步骤
1、新建Qt工程
2、在Pro文件中添加opencv 库的头文件和源文件路径
3、在Ui布局中,放入Label 部件,并将栅格化(为了视频能随着窗口大小做调整), 最终视频要在Label上显示
4、具体代码思路
利用opencv中的VideoCapture 类中的 成员函数open()来打开摄像头
将每次读取的摄像头数据处理成能在label 部件中显示的数据格式,然后显示在Label中。
(1)下面的代码实现是实现Mat格式转换为QImage格式
QImage CameraManage::Mat2QImage(Mat& cvImg) // Mat格式转换为QImage格式
{
QImage qImg;
if(cvImg.channels()==3) //3 channels color image
{
cv::cvtColor(cvImg,cvImg,CV_BGR2RGB);
qImg =QImage((const unsigned char*)(cvImg.data),
cvImg.cols, cvImg.rows,
cvImg.cols*cvImg.channels(),
QImage::Format_RGB888);
}
else if(cvImg.channels()==1) //grayscale image
{
qImg =QImage((const unsigned char*)(cvImg.data),
cvImg.cols,cvImg.rows,
cvImg.cols*cvImg.channels(),
QImage::Format_Indexed8);
}
else
{
qImg =QImage((const unsigned char*)(cvImg.data),
cvImg.cols,cvImg.rows,
cvImg.cols*cvImg.channels(),
QImage::Format_RGB888);
}
return qImg;
}
(2)下面的代码实现是使图片能适应Lable部件
QImage CameraManage::ScaleImage2Label(QImage qImage, QLabel* qLabel) // 使图片能适应Lable部件
{
QImage qScaledImage;
QSize qImageSize = qImage.size();
QSize qLabelSize = qLabel->size();
double dWidthRatio = 1.0*qImageSize.width() / qLabelSize.width();
double dHeightRatio = 1.0*qImageSize.height() / qLabelSize.height();
if (dWidthRatio>dHeightRatio)
{
qScaledImage = qImage.scaledToWidth(qLabelSize.width());
}
else
{
qScaledImage = qImage.scaledToHeight(qLabelSize.height());
}
return qScaledImage;
}
(3)下面的代码实现是打开笔记本摄像头
void CameraManage::openCamera()
{
cap.open(0); //笔记本一般是0 open函数直接能打开USB摄像头,也能打开网络摄像头,具体参数,直接百度, 也能直接打开图片、视频
timer->start(33); // 开始计时,超时则发出timeout()信号
}
(4)下面的代码实现的是读取摄像头的每一帧数据并作处理,完后在Label部件上显示出来
void CameraManage::readFarme()
{
cap >> frame;
image = Mat2QImage(frame);
QImage scaleImage = ScaleImage2Label( image, ui->lb_display ); // 显示到label上
ui->lb_display->setPixmap(QPixmap::fromImage(scaleImage));
ui->lb_display->setAlignment(Qt::AlignCenter);
ui->lb_display->show();
}
5、结果展示
二、完整代码分享
1、下载地址如下
https://pan.baidu.com/s/1t43kr2KqnY2BGj9jGYHV3g
2、csdn的下载链接
https://download.csdn.net/download/qq_38880380/10921579
其他请见:
OpenCV3.2+Qt5.8.0+Win10配置和使用----(1)Qt5.8.0的安装
OpenCV3.2+Qt5.8.0+Win10配置和使用----(2)CMake的安装
OpenCV3.2+Qt5.8.0+Win10配置和使用----(3)opencv3.2的配置
OpenCV3.2+Qt5.8.0+Win10配置和使用----(4)配置环境变量+编译opencv&opencv-contrib