当前位置: 首页 > article >正文

opencv视频读写

需要使用VideoCapture类

读取mp4文件

cv::VideoCapture vcapture("chouyan2.mp4");
    if (vcapture.isOpened()) {
        while (vcapture.grab()) {// 直接从视频文件或者设备捕获中抓取帧
            cv::Mat myFrame;
            //vcapture >> myFrame; // 将视频中的数据流向Mat
            if (vcapture.read(myFrame)) {
                cv::imshow("读取mp4视频文件", myFrame);
                cv::waitKey(40);
            }
        }
    }
    vcapture.release();

读取rtsp流并且按下空格键保存图片

修改文件名即可

cv::VideoCapture vcapture("rtsp://admin:Admin123@192.168.101.234");
    int picNum{ 0 };
    if (vcapture.isOpened()) {
        while (vcapture.grab()) {// 直接从视频文件或者设备捕获中抓取帧
            cv::Mat myFrame;
            //vcapture >> myFrame; // 将视频中的数据流向Mat
            if (vcapture.read(myFrame)) {
                cv::imshow("读取rtsp视频文件", myFrame);
                if (cv::waitKey(20) == 32) {
                    std::string picName = std::to_string(picNum) + ".jpg";
                    cv::imwrite(picName.c_str(), myFrame);
                    picNum++;
                }
            }
        }
    }
    vcapture.release();

编码生成视频文件

cv::VideoCapture vcapture("rtsp://admin:Admin123@192.168.101.234");
    cv::VideoWriter vcwriter("test.mp4", cv::VideoWriter::fourcc('X', '2', '6', '4'), 25
            , cv::Size(vcapture.get(cv::CAP_PROP_FRAME_WIDTH), vcapture.get(cv::CAP_PROP_FRAME_HEIGHT)), true);
    int picNum{ 0 };
    if (vcapture.isOpened()) {
        while (vcapture.grab()) {// 直接从视频文件或者设备捕获中抓取帧
            cv::Mat myFrame;
            //vcapture >> myFrame; // 将视频中的数据流向Mat
            if (vcapture.read(myFrame)) {
                drawrectangle(myFrame);
                cv::imshow("读取rtsp视频文件", myFrame);
                int key = cv::waitKey(20);
                if (key == 32) {
                    std::string picName = std::to_string(picNum) + ".jpg";
                    cv::imwrite(picName.c_str(), myFrame);
                    picNum++;
                    break;
                } else if (key == 'q') {
                    break;
                }
                vcwriter.write(myFrame);
            }
        }
    }
    vcapture.release();
    vcwriter.release();

http://www.kler.cn/a/394412.html

相关文章:

  • 【QT常用技术讲解】优化网络链接不上导致qt、qml界面卡顿的问题
  • Ruby编程语言全景解析:从基础到进阶
  • 数字孪生在智慧能源项目中的关键作用,你了解多少?
  • ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)
  • 标准C++ 字符串
  • 大数据开发面试宝典
  • 机器学习(1)
  • Substance Painter技巧及心得
  • 自動換IP為什麼會不穩定?
  • shell命令笔记
  • gitlab修改root密码详细详情,高版本通用
  • 35数据库服务器(如MySQL, PostgreSQL)
  • Puppeteer教程:使用CSS选择器点击和爬取动态数据
  • 手机版产品目录如何制作?
  • PdServer:调用MidjourneyAPI完成静夜思图文生成
  • PySpark——Python与大数据
  • 极狐GitLab 发布安全补丁版本17.5.2, 17.4.4, 17.3.7
  • 为什么在Ubuntu下使用VScode开发C++程序时需要手动配置链接库
  • 深入理解js中函数中的形参与实参
  • 基于单片机智能温室大棚监测系统
  • 【ES6】ES6中,如何实现桥接模式?
  • kafka日志清理配置
  • odoo的 self.env 是什么
  • LabVIEW-TestExec SL
  • git上feature合并到development分支
  • 深度解析 Linux 系统下的 top 命令