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);
  }
}

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

(0)

相关推荐

  • python ffmpeg任意提取视频帧的方法

     环境准备 1.安装 FFmpeg 音/视频工具 FFmpeg 简易安装文档 2.安装 ffmpeg-python pip3 install ffmpeg-python 3.[可选]安装 opencv-python pip3 install opencv-python 4.[可选]安装 numpy pip3 install numpy 视频帧提取 准备视频素材 抖音视频素材下载:https://anoyi.com/dy/top 基于视频帧数提取任意一帧 import ffmpeg import

  • opencv3/C++轮廓的提取与筛选方式

    轮廓提取 findContours发现轮廓 findContours( InputOutputArray binImg, //输入8bit图像,0值像素值不变,非0的像素看成1:(变为二值图像) OutputArrayOfArrays contours,//输出找到的轮廓对象 OutputArray, hierachy// 图像的拓扑结构 int mode, //轮廓返回的模式(RETR_TREE等) int method,//发现方法(CHAIN_APPROX_SIMPLE等) Point o

  • linux下安装ffmpeg的详细教程

    一.centos linux下安装ffmpeg 1.下载解压 wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz tar -zxvf ffmpeg-3.1.tar.gz 2. 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录 cd ffmpeg-3.1 ./configure --prefix=/usr/local/ffmpeg make && make install 3.配置变量 vi /etc/

  • python整合ffmpeg实现视频文件的批量转换

    转换工具层出不穷,ffmpeg才是全能的转换工具,只是不支持图形操作. 没有关系,命令行方式,在freebsd/linux下直接来 我们的思路是,设定一个文件夹存放源视频文件,python读取该文件夹下的全部文件,并对文件通过ffmpeg进行分析,根据需要,修改目标文件的编码.分辨率等等,调用ffmpeg转换. 我这次的需求是,我家液晶电视只支持分辨来,长宽均小于720,编码只支持divx/xvid的avi文件,且fps只能小于25--多次实践,才总结出来的,电视说明书也没说!! 下面的程序将

  • opencv3/C++ 实现SURF特征检测

    SURF即Speeded Up Robust Features加速鲁棒特征: SURF可以用于对象定位和识别.人脸识别.3D重建.对象跟踪和提取兴趣点等. 工作原理: 1.选择图像中POI(Points of Interest) Hessian Matrix; 2.在不同的尺度空间发现关键点,非最大信号压制; 3.发现特征点方法.旋转不变性要求; 4.生成特征向量; 类SURF中成员函数create()参数说明: static Ptr<SURF> create( double hessianT

  • opencv3/C++实现视频读取、视频写入

    视频读取 视频读取,主要利用VideoCapture类下的方法打开视频并获取视频中的帧,具体示例如下: #include<iostream> #include<opencv2/opencv.hpp> using namespace cv; int main() { VideoCapture capture; Mat frame; frame= capture.open("E:/image/a1.avi"); if(!capture.isOpened()) { p

  • C++使用OpenCV实现证件照蓝底换成白底功能(或其他颜色如红色)详解

    本文实例讲述了C++使用OpenCV实现证件照蓝底换成白底功能(或其他颜色如红色).分享给大家供大家参考,具体如下: 今天刚好老师要办点事情,老师唯一的一张证件照是蓝色的,但是需要的底色是白色的,于是乎,好久不折腾的PS也忘记了,还好旁边的刚来的小学弟懂一点, 在那里慢慢的帮老师一点点的处理,PS在边缘的地方效果还真不咋地,确实是一门技术活. 于是我就想OpenCV能不能实现呢?一搜百度第一篇就是,但是人家转成红色,然后我又对HSV颜色空间不是很懂,最后在一个学习群里 但是文中未对HSV那一块做

  • C++ opencv实现的把蓝底照片转化为白底照片功能完整示例

    本文实例讲述了C++ opencv实现的把蓝底照片转化为白底照片功能.分享给大家供大家参考,具体如下: #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace std; using namespace c

  • java使用ffmpeg实现上传视频的转码提取视频的截图等功能(代码操作)

    ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用.ffmpeg能解析的格式和不能解析的格式都一一给大家说明了,具体内容详情跟随一起看看吧, 1.能支持的格式 ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 2.不能支持的格式 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),可以先用别的工具(menco

  • 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.syst

  • C++使用opencv读取图片的操作代码(图像处理)

    目录 代码理解 全部代码 读取结果 参考 代码理解 using namespace cv; 解释:加入此代码,后面就不需要在函数前加入cv:: 如从cv::imread(),可以直接写成imread() int main(int argc, char** argv) { return 0: } 解释: // argc是命令行,总的参数个数; argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数 // char *argv[] 用来取得你所输入的参数 /

  • python+opencv轮廓检测代码解析

    首先大家可以对OpenCV有个初步的了解,可以参考:简单了解OpenCV 轮廓(Contours),指的是有相同颜色或者密度,连接所有连续点的一条曲线.检测轮廓的工作对形状分析和物体检测与识别都非常有用. 在轮廓检测之前,首先要对图片进行二值化或者Canny边缘检测.在OpenCV中,寻找的物体是白色的,而背景必须是黑色的,因此图片预处理时必须保证这一点. import cv2 #读入图片 img = cv2.imread("1.png") # 必须先转化成灰度图 gray = cv2

  • python通过opencv实现图片裁剪原理解析

    这篇文章主要介绍了python通过opencv实现图片裁剪原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 图像裁剪的基本概念 : 图像裁剪是指将图像中我们想要的研究区以外的区域去除,经常是按照行政区划或研究区域的边界对图像进行裁剪.例如,一张500×400的图像,我们只想要中间的250×200的区域,就可以使用图像裁剪将四周的区域去除. 在实际开发工作中,我们经常需要对图像进行分幅裁剪,按照ERDAS实际图像分幅裁剪的过程,可以将图像分

  • java IO数据操作流、对象序列化、压缩流代码解析

    数据操作流 在io包中,提供了两个与平台无关的数据操作流: 数据输入流(DataInputStream) 数据输出流(DataOutputStream) 通常数据输出流会按一定格式将数据输出,再通过数据输入流按照一定格式将数据读入 DataOutputStream接口定义了一系列的writeXxx()的操作,可以写入各种数据类型的数据. 范例:使用数据操作流写入与读出数据 import java.io.DataOutputStream ; import java.io.File ; import

  • Android 中图片和按钮按下状态变化实例代码解析

    1.图片设置背景选择器,以便点按或设置选中与否,背景切换 res/drawable/selector_settings_item_back.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused

  • 用opencv给图片换背景色的示例代码

    图像平滑 模糊/平滑图片来消除图片噪声 OpenCV函数:cv2.blur(), cv2.GaussianBlur(), cv2.medianBlur(), cv2.bilateralFilter() 2D 卷积 OpenCV中用cv2.filter2D()实现卷积操作,比如我们的核是下面这样(3×3区域像素的和除以10): img = cv2.imread('lena.jpg') # 定义卷积核 kernel = np.ones((3, 3), np.float32) / 10 # 卷积操作,

  • python Opencv计算图像相似度过程解析

    这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你儿子. 还有其他物品.什么桌子带腿.镜子反光能在里面倒影出东西,各种各样的特征,我们通过学习.归纳,自然而然能够很快识别分类出新物品.

  • 基于Java实现修改图片分辨率示例代码

    目录 前言 环境依赖 代码 验证一下 前言 本文提供可以修改图片分辨率的java工具类,实用主义的狂欢. 环境依赖 添加必要的一些maven依赖. <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.15</version> </dependency> <dependency&

  • JSON键值对序列化和反序列化解析

    什么是JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and easy for machines to parse and generate. JSON is a text format that is completely language independent. 翻译:Json[javascrip

随机推荐