Qt-OpenCV学习笔记--保存视频--VideoWriter()

这篇具有很好参考价值的文章主要介绍了Qt-OpenCV学习笔记--保存视频--VideoWriter()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、概述

二、函数

三、测试代码

四、测试结果

五、遇到的问题

(1)初次运行代码会报错

(2)关于cv::VideoWriter::fourcc('X','2','6','4')

六、参考


一、概述

这个函数是将连续的视频帧编码并保存到磁盘。函数的用法比较简单,但有一些问题点需要注意。

二、函数

cv::VideoWriter::VideoWriter
(
	const String & 	filename,
    int 	fourcc,
    double 	fps,
    Size 	frameSize,
    bool 	isColor = true 
)		
filename 视频的保存路径和文件名(包含文件后缀)
fourcc 用于压缩帧的4字符编解码器代码(参数值为0,默认编码为AVI格式,不压缩,文件会很大)
fps 视频帧率
frameSize 视频的分辨率
isColor 如果不为零,编码器将预期并编码彩色帧,否则将处理灰度帧。

videowriter,Qt-OpenCV学习笔记(初级),opencv,学习,qt,计算机视觉

三、测试代码

#include "widget.h"
#include "ui_widget.h"

#include <QDebug>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <vector>

using namespace cv;
using namespace std;

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //载入视频路径
    VideoCapture capture("c:/opencv/cup.mp4");

    //获取原视频的尺寸
    int a = capture.get(CAP_PROP_FRAME_WIDTH);
    int b = capture.get(CAP_PROP_FRAME_HEIGHT);
    Size framesize(a,b);

    //获取原视频的编码格式
    int fourcc = capture.get(CAP_PROP_FOURCC);
    qDebug()<<"编码格式:"<<fourcc;
    //获取原视频的帧率
    double fps = capture.get(CAP_PROP_FPS);
    qDebug()<<"帧率:"<<fps;
    //获取原视频的总帧数
    long int count= capture.get(CAP_PROP_FRAME_COUNT);
    qDebug()<<"总帧数:"<<count;

    //自定义编码格式
    int fourcc2 = cv::VideoWriter::fourcc('X','2','6','4');
    qDebug()<<"自定义编码格式:"<<fourcc2;

    //实例视频保存对象
    VideoWriter videoWriter("c:/opencv/cup2.mp4",fourcc,fps,framesize,true);

    //新建矩阵
    Mat frame;

    //循环
    while (1)
    {

        //读取当前帧(再次读取时,Mat自动释放,获取下一帧图像)
        capture>>frame;

        //播放完毕,跳出循环
        if(frame.empty())
        {
            qDebug()<<"播放完毕!";
            break;
        }

        //图像显示
        imshow("frame",frame);

        //保存图像
        videoWriter<<frame;

        //延时50毫秒,读取下一帧视频(延时越小,速度越快;反之,越慢)
        waitKey(25);
    }

}

Widget::~Widget()
{
    delete ui;
}

四、测试结果

videowriter,Qt-OpenCV学习笔记(初级),opencv,学习,qt,计算机视觉

五、遇到的问题

(1)初次运行代码会报错

videowriter,Qt-OpenCV学习笔记(初级),opencv,学习,qt,计算机视觉

提示缺少 openh264-1.8.0-win64.dll

下载地址:

https://github.com/cisco/openh264/releases

videowriter,Qt-OpenCV学习笔记(初级),opencv,学习,qt,计算机视觉

下载解压后,将 openh264-1.8.0-win64.dll 复制到 bin 目录即可。

videowriter,Qt-OpenCV学习笔记(初级),opencv,学习,qt,计算机视觉

(2)关于cv::VideoWriter::fourcc('X','2','6','4')

下载 openh264-1.8.0-win64.dll 后,不再其实缺少文件。

但用 cv::VideoWriter::fourcc(char c1,char c2,char c3,char c4) 设定参数,无论设定值是X264,还是MJPG,都会报错。但可以保存文件,并且文件可以正常播放。

测试代码中引用的mp4视频,拷贝于opencv的官方文档,获取其编码格式,进行编码,没有报错提示。其编码格式到底是哪一个,不得而知。

videowriter,Qt-OpenCV学习笔记(初级),opencv,学习,qt,计算机视觉

通过运行测试代码,可以看到 

X264 对应的实际值是 875967064 ,而获取的原视频的编码格式对应数值为 828601953 。

查看官方文档,也是只列举了编码参数对应的编码格式,实在太多,没有继续深究。

下面是官方文档的转载。

Video Codecs by FOURCC

Video Codecs by FOURCC 视频格式编码

六、参考

Opencv C++:使用VideoWriter 写视频

opencv中videowriter的使用

Opencv中VideoWriter详解文章来源地址https://www.toymoban.com/news/detail-647147.html

到了这里,关于Qt-OpenCV学习笔记--保存视频--VideoWriter()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT+opencv【opencv学习篇】OpenCV 读取、显示和保存图像

    目录   一、OpenCV 读取图像 OpenCV 读取函数 参数: 二、OpenCV 显示图像 imshow函数 imshow函数功能 imshow函数原型 三、OpenCV 保存图像 四、结果和代码   OpenCV 允许我们对图像执行多种操作,但要做到这一点,需要读取一个图像文件作为输入,然后我们可以对其执行各种操作。Ope

    2024年02月16日
    浏览(37)
  • Opencv(C++)笔记--打开摄像头、保存摄像头视频

    关键代码语句: ① VideoCapture cam(0); ② cam.read(img); ③ imshow(\\\"cam\\\", img); 关键代码: ①VideoWriter vw ②vw.open(): fourcc指定编码格式(常见编码方式)、 fps指定帧率、 Size指定大小 ③vw.write() 注:在Windows上执行上述代码可能会报以下错误: 解决方法:在输出的网址下载对应版本的库

    2024年02月11日
    浏览(40)
  • 【python学习笔记】:实现网页视频自动下载并保存

    如何使用python爬虫实现网页视频自动下载并保存: 使用python爬取页面,然后自动下载视频,但是这样会有一个问题,我并不是需要所有视频,有些是垃圾视频不需要下载,python似乎还没法做到识别我对哪些视频是有价值的,所以这一步人工绕不开,我选择直接把目标视频的详

    2024年02月11日
    浏览(37)
  • OpenCV VideoWriter使用方法

    在opencv中提供很好用的录制视频的句柄,也可称之为类videowriter。 1、打开视频输出 cv::VideoWriter有两个构造函数,一个是默认构造函数,仅仅创建一个未初始化的VideoWriter对象用于之后的打开操作;另一个是拥有所需要的参数,并初始化VideoWriter对象,如下: 写视频时需要设置

    2024年02月06日
    浏览(27)
  • 【OpenCV学习笔记03】- 视频入门

    这是对于 OpenCV 官方文档的 GUI 功能的学习笔记。学习笔记中会记录官方给出的例子,也会给出自己根据官方的例子完成的更改代码,同样彩蛋的实现也会结合多个知识点一起实现一些小功能,来帮助我们对学会的知识点进行结合应用。 如果有喜欢我笔记的请麻烦帮我关注、

    2024年02月02日
    浏览(36)
  • [OpenCV学习笔记]Qt+OpenCV实现图像灰度反转、对数变换和伽马变换

    灰度反转是一种线性变换,是将某个范围的灰度值映射到另一个范围内,一般是通过灰度的对调,突出想要查看的灰度区间。 S = L − 1 − r ( r ⊂ [ 0 , L − 1 ] ) S = L -1-r (r subset [0,L-1]) S = L − 1 − r ( r ⊂ [ 0 , L − 1 ]) 比如在以下胸片图像中提取白色絮状形状,在黑色背景下看

    2024年04月13日
    浏览(26)
  • OpenCv(C++)学习笔记二——视频的读取与输出

    cv::VideoCapture类是读取视频的,cv::VideoCapture既支持视频文件的读取,也支持从视频捕捉文件中读取视频。cv::VideoCapture类创建对象的方式如下三种: 第一种方法是从文件(AVI和MP4都可以)中逐帧读取视频。对象创建后,OpenCv将会打开文件并准备读取它。如果打开成功,将可以开始

    2024年01月23日
    浏览(32)
  • opencv基本操作二(读取视频流与保存视频、读取摄像头并保存视频)

    opencv常用 读视频函数 cv2.VideoCapture 、 cv2.VideoCapture.get 等,可以参考这里 opencv常用 写视频函数 cv2.VideoWriter 等可以参考这里 ,其中视频格式可以参考这里 videoCapture.read() 是按帧读取视频, ret,frame 是获 .read() 方法的两个返回值。其中 ret 是布尔值,如果读取帧是正确的则返回

    2023年04月08日
    浏览(39)
  • Python|OpenCV-读取视频,显示视频并保存视频(3)

    前言 本文是该专栏的第3篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用OpenCV处理视频的时候,不论是摄像头画面还是视频文件,通常情况下都要使用VideoCapture类来进行每一帧图像的处理。对于OpenCV而言,只要使用视频文件作为参数,它就可以打开视频文

    2024年02月11日
    浏览(32)
  • OpenCV实现视频的读取、显示、保存

    目录 1,从文件中读取视频并播放 1.2代码实现 1.3效果展示 2,保存视频 2.1    代码实现 2.2   结果展示 下面将详细介绍如何使用OpenCV实现视频的读取、显示和保存,并解释其原理。 视频读取: 使用OpenCV可以通过 cv2.VideoCapture 类来读取视频文件。该类提供了一系列方法用于操

    2024年02月03日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包