opencv视频读写

需要使用VideoCapture类

读取mp4文件

cpp 复制代码
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流并且按下空格键保存图片

修改文件名即可

cpp 复制代码
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();

编码生成视频文件

cpp 复制代码
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();
相关推荐
冒冒菜菜5 分钟前
根据txt标签文件在图像上生成真实标签框
人工智能·计算机视觉
集芯微电科技有限公司11 分钟前
PC1001超高频率(50HMZ)单通单低侧GaN FET驱动器支持正负相位配置
数据结构·人工智能·单片机·嵌入式硬件·神经网络·生成对抗网络·fpga开发
Love Song残响11 分钟前
VSCode高效AI开发全攻略
ide·人工智能·vscode
码农小白猿22 分钟前
IACheck提升锅炉安装验收报告审核效率:智能化审核为安全合规保驾护航
运维·人工智能·ai·iacheck
hello我是小菜鸡22 分钟前
马尔可夫跳变系统镇定
人工智能·机器学习
阿正的梦工坊25 分钟前
Rubicon论文数据部分详解:从Rubric设计到RL Pipeline的全流程
人工智能·深度学习·机器学习·语言模型·自然语言处理
njsgcs38 分钟前
cuas 电脑操作ai 相关
人工智能
独自归家的兔1 小时前
基于 cosyvoice-v3-plus 的 个人音色复刻 (华为OBS)
人工智能·华为·语音识别
fantasy_arch1 小时前
AV1视频编码位于图像边界的超级块划分
计算机视觉·音视频·av1
Legend NO241 小时前
如何构建自己高质量语料库?
人工智能·非结构化数据