Opencv VideoCapture

  1. 头文件

#include <opencv2/opencv.hpp>

using namespace cv;

  1. 打开摄像头

/*

Windows:

0 笔记本自带摄像头

1 是 第一个usb摄像头

Linux可填 /dev/video0

*/

//方式一:

VideoCapture m_cap(0);

//方式二:

VideoCapture m_cap;

m_cap.open(0);

  1. 打开本地视频文件

方式一:

VideoCapture m_cap("test.mp4");

方式二:

VideoCapture m_cap;

m_cap.open("test.mp4");

  1. 打开网络流

方式一:

VideoCapture m_cap("rtsp:://xxxx/stream");

方式二:

VideoCapture m_cap;

m_cap.open("rstp:://xxxx/stream");

  1. 判断是否打开成功

m_cap.isOpened()

  1. 读取一帧画像

Mat frame;

方式一:

m_cap.read(frame);

方式二:

m_cap >> frame;

  1. 判断是否读到末尾

frame.empty();

  1. 释放资源

m_cap.release();

示例代码:

cpp 复制代码
//放到线程执行
VideoCapture m_cap;

m_cap.open(0);

Mat frame;

while(m_cap.read(frame)){
    
    cv::flip(frame, frame, 1);
    cvtColor(frame, frame, COLOR_BGR2RGB);

    QImage img = QImage((const unsigned char*)frame.data, frame.cols, frame.rows, static_cast<int>(frame.step), QImage::Format_RGB888));
    emit sendImg(img);
    QThread::msleep(33);    // 控制帧率,防止CPU占有率过高
    
}

// UI线程
ui->lable->setPixmap(QPixmap::fromImage(img));
  1. 获取视频属性 .get(propid)

    cap.get(CAP_PROP_FRAME_WIDTH); // 宽度
    cap.get(CAP_PROP_FRAME_HEIGHT); // 高度
    cap.get(CAP_PROP_FPS); // 帧率
    cap.get(CAP_PROP_FRAME_COUNT); // 总帧数(视频文件)
    cap.get(CAP_PROP_POS_FRAMES); // 当前帧号

  2. 设置摄像头参数 .set(propId, value)

    // 设置分辨率 640*480
    cap.set(CAP_PROP_FRAME_WIDTH, 640);
    cap.set(CAP_PROP_FRAME_HEIGHT, 480);
    // 设置帧率
    cap.set(CAP_PROP_FPS, 30);

相关推荐
我是小灰灰吖3 小时前
Ubuntu 22.04 + Qt 6.9.3 应用程序打包与部署完整指南
qt·ubuntu
qq_401700415 小时前
Qt自定义信号槽详解:带参发射 vs sender()获取,两种多信号关联方案全掌握
java·数据库·qt
郝学胜-神的一滴7 小时前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面
崖边看雾7 小时前
OpenCV 图像处理学习笔记|图像运算、边界填充、阈值处理、图像平滑滤波
图像处理·opencv·学习
AI的探索之旅7 小时前
嵌入式视觉学习路线:Qt + OpenCV + 工业相机,从零到综合项目
qt·opencv·学习
我是小灰灰吖9 小时前
Ubuntu22.04,OpenCV 4.5.5 环境搭建
linux·qt·ubuntu
AI的探索之旅11 小时前
AI + LLM Wiki 高效学习 OpenCV:我的 8 步闭环方法论
人工智能·opencv·学习
雨田言炎1 天前
十、QThread多线程
linux·服务器·开发语言·前端·qt
sali-tec1 天前
C# 基于OpenCv的视觉工作流-章102-车牌识别
图像处理·人工智能·opencv·计算机视觉