OPENCV例子opencv-4.5.5\samples\gpu\video_writer.cpp的代码分析

使用VideoWriter生成视频流;WIN32环境下使用。

OpenCV是一个强大的计算机视觉库,而不是视频流编码器或者解码器;

OpenCV只支持avi的格式,而且生成的视频文件不能大于2GB,而且不能添加音频。

示例main函数调用情况如下:

 

示例main函数流程图情况如下:

 

示例main函数UML逻辑图情况如下:

 

示例源代码如下:

#include <iostream>

#include "opencv2/opencv_modules.hpp"

//#if defined(HAVE_OPENCV_CUDACODEC) && defined(_WIN32)

#include <vector>

#include <numeric>

#include "opencv2/core.hpp"

#include "opencv2/cudacodec.hpp"

#include "opencv2/highgui.hpp"

using namespace cv;

int main(int argc, const char* argv[])

{

    if (argc != 2)

    {

        std::cerr << "Usage : video_writer <input video file>" << std::endl;

        return -1;

    }

    const double FPS = 25.0;

    cv::VideoCapture reader(argv[1]);

    if (!reader.isOpened())

    {

        std::cerr << "Can't open input video file" << std::endl;

        return -1;

    }

    cv::cuda::printShortCudaDeviceInfo(cv::cuda::getDevice());

    cv::VideoWriter writer;

    cv::Ptr<cv::cudacodec::VideoWriter> d_writer;

    cv::Mat frame;

    cv::cuda::GpuMat d_frame;

    std::vector<double> cpu_times;

    std::vector<double> gpu_times;

    TickMeter tm;

    for (int i = 1;; ++i)

    {

        std::cout << "Read " << i << " frame" << std::endl;

        reader >> frame;

        if (frame.empty())

        {

            std::cout << "Stop" << std::endl;

            break;

        }

        if (!writer.isOpened())

        {

            std::cout << "Frame Size : " << frame.cols << "x" << frame.rows << std::endl;

            std::cout << "Open CPU Writer" << std::endl;

            if (!writer.open("output_cpu.avi", cv::VideoWriter::fourcc('X', 'V', 'I', 'D'), FPS, frame.size()))

                return -1;

        }

        if (d_writer.empty())

        {

            std::cout << "Open CUDA Writer" << std::endl;

            const cv::String outputFilename = "output_gpu.avi";

            d_writer = cv::cudacodec::createVideoWriter(outputFilename, frame.size(), FPS);

        }

        d_frame.upload(frame);

        std::cout << "Write " << i << " frame" << std::endl;

        tm.reset(); tm.start();

        writer.write(frame);

        tm.stop();

        cpu_times.push_back(tm.getTimeMilli());

        tm.reset(); tm.start();

        d_writer->write(d_frame);

        tm.stop();

        gpu_times.push_back(tm.getTimeMilli());

    }

    std::cout << std::endl << "Results:" << std::endl;

    std::sort(cpu_times.begin(), cpu_times.end());

    std::sort(gpu_times.begin(), gpu_times.end());

    double cpu_avg = std::accumulate(cpu_times.begin(), cpu_times.end(), 0.0) / cpu_times.size();

    double gpu_avg = std::accumulate(gpu_times.begin(), gpu_times.end(), 0.0) / gpu_times.size();

    std::cout << "CPU [XVID] : Avg : " << cpu_avg << " ms FPS : " << 1000.0 / cpu_avg << std::endl;

    std::cout << "GPU [H264] : Avg : " << gpu_avg << " ms FPS : " << 1000.0 / gpu_avg << std::endl;

    return 0;

}

//#else

//int main()

//{

//    std::cout << "OpenCV was built without CUDA Video encoding support\n" << std::endl;

//    return 0;

//}

//#endif

### 回答1: opencv-4.5.5-vc14_vc15.exe 是OpenCV框架的一个版本,并且它适用于使用VC14和VC15编译器的Windows操作系统。VC14和VC15分别指的是Visual Studio 2015和Visual Studio 2017等版本。 如果您需要在Windows操作系统上使用OpenCV框架进行图像处理和计算机视觉任务,您可以下载opencv-4.5.5-vc14_vc15.exe安装程序。这个安装程序包含编译好的OpenCV库与相关的配置文件,并且它提供了一些示例代码和文档来帮助您快速开始使用OpenCV。 一旦您下载并安装了这个exe文件,您就可以在您的项目中包含OpenCV库,并使用OpenCV函数进行图像处理、特征提取、对象检测等操作。这个版本还支持各种图像格式的读取和写入,并提供了一些常用的图像处理算法和工具。 总之,opencv-4.5.5-vc14_vc15.exe提供了一个方便的方式来获取和使用OpenCV框架,让您能够在Windows平台上进行图像处理和计算机视觉开发。但在安装之前,请确保您的操作系统和编译器版本与它的要求相符合。 ### 回答2: opencv-4.5.5-vc14_vc15.exe 是OpenCV的一个版本。OpenCV是一个开源的计算机视觉库,用于图像处理和计算机视觉任务。下载这个文件意味着你可以安装这个版本的OpenCV库到你的计算机上。 首先,你需要找到这个文件的下载链接。你可以在OpenCV的官方网站上找到这个版本的下载页面,并从中获取到下载链接。下载这个文件之前,你需要确保你的计算机满足安装OpenCV所需的最低系统要求。 一旦下载完成,你可以双击运行这个.exe文件。运行这个文件会打开一个安装向导,它将引导你完成安装过程。安装向导会问你选择安装路径和其他一些选项。你可以按照默认设置进行安装,或者根据自己的需要进行个性化设置。安装过程可能需要一些时间,具体取决于你的计算机性能和文件大小。 安装完成后,你可以在你选择的安装路径中找到OpenCV的文件和库。你可以使用这些文件和库来开发和运行图像处理和计算机视觉应用程序。 总结来说,下载opencv-4.5.5-vc14_vc15.exe是为了安装OpenCV库到你的计算机上,它提供了图像处理和计算机视觉功能。安装过程相对简单,一旦完成,你就可以开始使用OpenCV并开发自己的应用程序。 ### 回答3: OpenCV是一个开源计算机视觉库,用于处理图像和视频的编程工具。在OpenCV的官方网站上,我们可以找到多个版本的OpenCV进行下载。其中,opencv-4.5.5-vc14_vc15.exe是适用于使用Microsoft Visual Studio 2015和2017的用户的Windows版本。 下载该文件非常简单。首先,我们需要打开OpenCV的官方网站。然后,在网站的下载页面上找到相应的版本,即opencv-4.5.5-vc14_vc15.exe。点击该文件后,可以选择下载镜像源,例如,SourceForge、GitHub等。选择一个合适的镜像源后,点击下载按钮即可开始下载。 下载完成后,我们可以找到下载的.exe文件在计算机上的存储位置,一般是在默认的下载文件夹中。我们可以双击该文件来运行它,并按照安装向导的指引来安装OpenCV。安装过程中,可以选择所需的组件和功能来满足个人需求。 一旦安装完成,我们就可以开始使用OpenCV来处理图像和视频了。通过编写代码,并使用OpenCV的函数和方法,我们可以实现各种功能,例如图像增强、目标检测、人脸识别等。 总而言之,通过下载opencv-4.5.5-vc14_vc15.exe文件,并按照安装指引来安装OpenCV,我们可以获得一个用于图像和视频处理的强大工具库。无论是对于计算机视觉的研究还是应用开发,OpenCV都是一个非常有用的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qqq9668

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值