VideoCapture
类主要用于从视频文件或摄像头捕获视频。这个指针 capture
可以用来控制视频的打开、读取帧、查询属性以及关闭视频流等操作。
static cv::Mat frame;
声明了一个静态的 cv::Mat
对象 frame
,用于存储图像帧。cv::Mat
是 OpenCV 中用于存储图像的矩阵类
从摄像头获取的图像是 MAT图片矩阵格式(摄像头将视频通过capture存储在frame中) , 显示的时候需要将MAT格式转换为QImage格式
当开始按键按下之后 1.需要将当前的摄像头设备打开,将按键上的文字进行更改
2.将定时器打开,返回摄像头的状态
camera类:
cpp
connect(timer,&QTimer::timeout,[=](){
this->timerTimeOut();
});
cpp
void camera::timerTimeOut()
{
//如果没有摄像头打开,停止计时器
if(!capture->isOpened())
{
timer->stop();
return;
}
//cv::Mat 是 OpenCV 库中用于存储图像的矩阵类。
//frame 是一个静态的 cv::Mat 对象,
//用于存储从视频流或图像文件中读取的帧。
static cv::Mat frame;
//使用 OpenCV 的视频捕获功能从视频源(如摄像头或视频文件)读取一帧图像到 frame 变量中
//>> 操作符在这里被重载用于从视频捕获对象中提取帧
*capture >> frame;
if(frame.cols)//判断图像矩阵frame的列数是否为0
{
//不为0时,发送图片信号
emit readyImage(matToQImage(frame));
}
}