C++ opencv ffmpeg图片序列化实现代码解析

 更新时间:2020年08月27日 08:35:47   作者:njit_77  
这篇文章主要介绍了C++ opencv ffmpeg图片序列化实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

0、如果路径中存在空格,用""把路径包括起来

1、使用ffmpeg命令

ffmpeg -y -framerate 10 -start_number 1 -i E:\Image\Image_%d.bmp E:\test.mp4
-y 			 表示输出时覆盖输出目录已存在的同名文件
-framerate 10		 表示视频帧率
-start_number 1		 表示图片序号从1开始
-i E:\Image\Image_%d.bmp 表示图片输入流格式 

2、c++ 实现 ffmpeg命令

2.1、system方式

// 代码中执行过程中会出现黑屏的闪烁,无法隐藏
system("ffmpeg.exe -y -framerate 10 -start_number 1 -i E:\Image\Image_%d.bmp E:\test.mp4");

2.2、ShellExecuteEx方式

SHELLEXECUTEINFO ShExecInfo = { 0 };
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;

ShExecInfo.lpVerb = L"open";
ShExecInfo.lpFile = L"ffmpeg.exe";
ShExecInfo.lpParameters = L"ffmpeg.exe -y -framerate 10 -start_number 1 -i E:\Image\Image_%d.bmp E:\test.mp4";

ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;//窗口状态为隐藏
ShExecInfo.hInstApp = NULL;
if (ShellExecuteEx(&ShExecInfo))
{
  if (ShExecInfo.hProcess)
  {
    WaitForSingleObject(ShExecInfo.hProcess, INFINITE);
  }
}

3、使用opencv

cv::Mat image;
int fps = 10;//视频帧率

/*cv::VideoWriter::fourcc('M', 'P', '4', 'V')生成MP4格式视频*/
/*cv::VideoWriter::fourcc('M', 'J', 'P', 'G')生成avi格式视频,大小比'X', 'V', 'I', 'D'大*/
/*cv::VideoWriter::fourcc('X', 'V', 'I', 'D')生成avi格式视频*/
cv::VideoWriter writer("video_out.avi", cv::VideoWriter::fourcc('M', 'J', 'P', 'G'),
            fps, cv::Size(3840, 2748)/*图片大小,一定不能出错*/, 0);

for (size_t i = 1; i <= 100; i++)
{
  image = cv::imread("Image_" + std::to_string(i) + ".bmp", cv::IMREAD_GRAYSCALE);
  if (!image.empty())
  {
    writer.write(image);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言字符串函数模拟实现流程介绍

    C语言字符串函数模拟实现流程介绍

    字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数
    2022-09-09
  • C++ new、delete(new[]、delete[])操作符重载需要注意的问题

    C++ new、delete(new[]、delete[])操作符重载需要注意的问题

    这篇文章主要介绍了C++ new、delete(new[]、delete[])操作符重载需要注意的问题,本文同时讲解了兼容默认的 new、delete 的错误处理方式、多态的问题等内容,需要的朋友可以参考下
    2014-10-10
  • C语言运算符的优先级和结合性实例详解

    C语言运算符的优先级和结合性实例详解

    本文主要介绍C语言运算符的知识,这里对运算符的优先级和结合性做出了详解,并附实例代码,希望能帮助有需要的小伙伴
    2016-07-07
  • C++关键字typename的深入理解

    C++关键字typename的深入理解

    本篇文章是对C++中的关键字typename进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++内存泄漏及检测工具详解

    C++内存泄漏及检测工具详解

    最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控
    2013-10-10
  • C++实现LeetCode(92.倒置链表之二)

    C++实现LeetCode(92.倒置链表之二)

    这篇文章主要介绍了C++实现LeetCode(倒置链表之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++实例讲解引用的使用

    C++实例讲解引用的使用

    引用是C++一个很重要的特性,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价,这篇文章主要给大家总结介绍了C++中引用的相关知识点,需要的朋友可以参考下
    2022-05-05
  • OpenGL实现中点划线法

    OpenGL实现中点划线法

    这篇文章主要为大家详细介绍了OpenGL实现中点划线法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 解析使用C++编写无错代码的方法技巧

    解析使用C++编写无错代码的方法技巧

    本篇文章是对使用C++编写无错代码的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++设计模式之访问者模式

    C++设计模式之访问者模式

    这篇文章主要介绍了C++设计模式之访问者模式,本文讲解了什么是访问者模式、访问者模式的UML类图、访问者模式的实现代码等内容,需要的朋友可以参考下
    2014-10-10

最新评论