opencv 读取视频(opencv保存视频mp4)
opencv 读取视频(opencv保存视频mp4),新营销网红网本栏目通过数据整理汇集了opencv 读取视频(opencv保存视频mp4)相关信息,下面一起看看。
引言深入分析了OpenCV中VideoCapture对象背后的第三方库支持和视频编解码速度的奥秘。
支持的第三方编解码库及类型我们都知道,OpenCV中的VideoCapture视频读取就是在其他第三方库的帮助下进行编解码的过程。目前支持的视频解码主要包括
MKV/mpeg 2 mkv/h 264 mkv/h 265 mkv/vp8mp 4/mpeg 2 MP 4/h 264 MP 4/h 265 avi/mpeg 2 avi/h 264 avi/VP8视频编码主要包括
MKV/mpeg 2 mkv/h 264 mkv/vp8mp 4/h 264 avi/mpeg 2 avi/h 264 avi/VP8我们最常用的OpenCV中读取视频文件的函数的VideoCapture参数解释如下
CV : Video Capture :3360 Video Capture(const string filename,int API preference=CAP_ANY)在参数filename表示文件名的地方,人们往往忽略了第二个参数的默认值是CAP_ANY,这意味着系统自动检测选择。读取摄像头或IP视频流时
CV :视频捕捉3360视频捕捉(int index,int API preference=cap _ any)其中index表示摄像机的ID。
读取视频文件时,第二个参数可以设置为
cv : cap _ FFMPEG cv 3360: cap _ Intel _ MFX读取摄像头或视频流时,第二个参数可以设置为
Cv:CAP_DSHOW //windows仅支持cv 33603360 cap _ MS mfcv 33603360 cap _ V4L如何查询当前OpenCV版本支持哪些视频编解码的第三方后端库可以通过以下代码完成
STD : vector cv : videocaptureapis VCS=cv : video io _ registry :3360 getbackends();for(auto item : VCS){ STD : cout name : cv :3360 video io _ registry : getbackendname(item)STD : endl;}运行结果如下
我的版本是OpenVINO2021.02 OpenCV4.5.1的共编译版本,支持GSTREAMER和INTEL_MFX后端库。FFMPEG和英特尔MFX库视频解码的对比演示代码如下
//cv : video capture cap( d :/test . h264 ,cv : cap _ INTEL _ MFX);//cv : video capture cap( d :/test . h264 ,cv : cap _ FFMPEG);//cv : video capture cap( d :/images/video/play _ football . MP4 ,cv : cap _ FFMPEG);cv:VideoCapture cap(0,cv : cap _ DSHOW);cv:Mat框架;cv:TickMeter tickint FPS=cap . get(cv : cap _ PROP _ FPS);int h=cap . get(cv : cap _ PROP _ FRAME _ HEIGHT);int w=cap . get(cv : cap _ PROP _ FRAME _ WIDTH);STD : cout fps : fps height : h width : w STD : endl;//cv : video writer writer( d :/test . h264 ,cv :3360 video writer : fourcc( H , 2 , 6 , 4 ),fps,cv :3360 size(w,H),true);while(true){ tick . start();bool ret=cap . read(frame);tick . stop();如果(!ret){ break;} double RES _ fps=tick . get counter()/tick . gettimesec();STD : cout tick . get counter() frames in tick . gettime sec() sec ~ RES _ FPS FPS (total time : tick . gettime sec() sec) STD : endl;cv:imshow(输入,帧);char c=cv : wait key(1);//writer . write(frame);if(c==27){ break;}}//writer.release()。cap . release();返回0;OpenCV,加速解码默认下载,只支持Widnows下的CAP_DSHOW解码读取实时视频流。我测试过,这种方法的实时性能不如直接读取视频文件的效率高。单纯读取我电脑自带摄像头(第八代酷睿i7 CPU)的速度只有35FPS左右,而我读取视频文件通过FFMPEG支持可以轻松达到每秒220FPS左右。而且OpenCV中的FFMPEG是不支持硬件加速的版本,所以响应更好的响应视频流水线操作绝对不能这样读。有什么好办法吗?结合OpenCV,有一条可以提高视频流解码速度,提高流水线运行效率的技术路线。
:使用GSTREAMER支持模式
与FFMPEG第三方库相比,GSTREAMER支持多种后端,通过软硬件加速解码视频,还支持异步操作。经过这波操作,解码速度会比原来OpenCV自动检测得到的速度快N倍。官方实验数据如下
事实证明,真的可以加快很多!只在ubuntu系统下验证过,没有在widnows系统下验证过。官方说理论上可以跑~~~~ ~作为技术人员,你知道这句话,就是坑多。自己看着办吧!
就是彻底抛弃Windows的DSHOW,有钱买加速卡,直接硬件解码加速,这样就没有后顾之忧了。
为了让大家更好的理解和使用OpenVINO框架,我特意整理了OpenVINO计算机视觉加速的学习路径,如下图
相关文章英雄超级放肆(还记得英雄超级放肆吗?)
龚自珍资料(清代诗人龚自珍生平事迹简介)
象牙塔是什么意思?(“象牙塔”有什么不好?)
彩色风信子(水培风信子容易养)
京字怎么读?
于吉是哪里人?(古代著名美女于吉在哪里?)
三本事业单位(我们还有哪些“三本”?)
电子酒柜(酒柜最全指南)
德州景点(德州62个景点)
玉兰油官网(玉兰油发布高端精华系列)
驱鬼(道教辟邪的法术)
奥林匹克五环代表什么?)
更多opencv 读取视频(opencv保存视频mp4)相关信息请关注本文章,本文仅仅做为展示!